SignalR 连接不会启动到 IIS 托管的应用程序

SignalR connection won't start to IIS-hosted app

我创建了一个应用程序,正在尝试通过 SignalR 连接到后端。

ASP.NET Core 3.1 后端托管在 IIS 中以便于开发。

在客户端上调用 StartAsync 方法成功协商,但随后在 GET 上永远挂起:

GET http://localhost:81/signalr?id=W3F2TRVrx_lxZoinHzTzmA

StartAsync() 调用无法 return。

这只发生在 IIS 上。当我启动自托管应用程序时,它可以正常工作。

WebAPI 的其余部分也适用于 IIS。只是 SignalR 无法连接。

知道为什么吗?我在这里找到 quite a questions 和答案,但其中 none 实际上解决了这个精确的问题。

原来我自己找到了答案:

IIS 默认不启用 Websocket 支持。它是在 IIS 8 中引入的,必须从 windows' 可选功能启用:https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-websocket-protocol-support

可选功能 -> IIS -> WWW 服务 -> 应用开发功能 -> Websocket 协议