部署在 AWS EB 后面时 SignalR 无法连接

SignalR can't connect when deployed behind AWS EB

我正在尝试在 AWS EB 中托管的应用程序上使用 SignalR,前面有一个应用程序负载均衡器。

我在本地测试时它工作得很好,但是部署时,websocket 无法建立连接 returns:

“错误:无法启动连接:错误:传输出错。”

“传输出错。在 WebSocket.o.onerror [如 __zone_symbol__ON_PROPERTYerror]”

我已经尝试在我的管道的最开始添加一个中间件,如果我收到对我的集线器的请求,它会记录下来,并且这有效,所以我认为它不是负载均衡器或任何与 AWS 相关的东西。

如果我用 Postman websocket 调用 URL,我会得到一个状态码 400。

我已经按照 MS 指南添加了 JWT 身份验证的配置

jwtTokenOptions.Events = new JwtBearerEvents
{
                    OnMessageReceived = context =>
                    {
                        var accessToken = context.Request.Query["access_token"];

                        // If the request is for our hub...
                        var path = context.HttpContext.Request.Path;
                        if (!string.IsNullOrEmpty(accessToken) &&
                            (path.StartsWithSegments("/signalr")))
                        {
                            // Read the token out of the query string
                            context.Token = accessToken;
                        }
                        return Task.CompletedTask;
                    }
                };

正如我所说,它在本地运行良好。欢迎提出任何建议

我通过在 eb 实例上为 IIS 启用网络套接字来解决这个问题。 我通过使用以下命令创建一个 eb 扩展来做到这一点

commands:
   01_install_websockets_feature:
      command: "%SystemRoot%\System32\dism.exe /online /enable-feature /featurename:IIS-WebSockets"
      ignoreErrors: true