运行 .Net Core 上 IIS 中的 Signalr - 集线器被击中但客户端看到 500 错误

Running Signalr in IIS on .Net Core - hub being hit but client sees 500 error

我有一个部署到 IIS 的 .net 核心应用程序。应用程序中有一个信号器中心。

我的问题是,当我的客户端访问集线器时,它会返回 500 错误。

我已将日志记录在集线器中,可以看到它被正确命中并且没有抛出异常。

当 运行 来自 Visual Studio 时,设置工作完美。

我在想 IIS 中可能没有正确设置某些东西。

有人知道这可能是什么吗?

我在 api 中启用了一般错误页面,并查看浏览器中的网络选项卡,我能够看到 signalr 正在进行的调用。

我查看了此请求的内容,发现服务器返回了以下消息的错误...

数据保护操作失败

经过一番搜索,我发现这是由于 IIS 应用程序池的设置引起的。

更改设置的步骤是...

  1. 打开 IIS 管理器
  2. Select应用程序池,继续select您的应用程序使用的应用程序池
  3. 右键单击它,然后select 高级设置,转到流程模型部分并找到“加载用户配置文件”选项并将其设置为True

这些步骤取自 http://puresourcecode.com/dotnet/post/ASPNET-The-data-protection-operation-was-unsuccessful