Azure Web 应用程序:Web 套接字在 100 秒后中止

Sam*_*der 3 c# owin azure-web-app-service

我正在编写一个 Web 套接字应用程序,打算使用 Azure Web 应用程序在云上托管。

Web 套接字是使用相当标准的 Owin 中间件实现的,并且在前 100 秒内功能齐全。在这段时间之后,websocket 似乎像发条一样进入了 aborted 状态。

[CLIENT][06/04/2018 11:27:21] WS client connected
[CLIENT][06/04/2018 11:29:01] WS client disconnected
Run Code Online (Sandbox Code Playgroud)

在 IIS Express 实例上尝试此操作会出现相同的问题,尽管延迟似乎是 90 秒而不是 100 秒(这也是一致的)。

作为 Owin 自托管应用程序的一部分运行相同的 websocket 可以稳定运行超过 25 分钟 - 所以这肯定是由托管服务器引起的问题。

在Azure Web应用程序托管上,我启用了Web套接字,并尝试启用“始终开启”功能,希望这可以通过阻止服务器进入待机状态来防止问题 - 但这没有帮助。

是否有任何我不知道的天蓝色设置可以进行调整,以便这些网络套接字可以保持更长时间的打开状态?

非常感谢

Sam*_*der 5

不幸的是,azure 和 IIS 似乎都是转移注意力的,问题是使用 System.Net.Websockets.ClientWebSocket 的 C# 实现时遇到的问题。详细信息精彩地总结在:.NET WebSockets 强制关闭,尽管连接保持活动状态和活动

对于遇到此问题的其他人来说,有效(但不理想)的解决方法是在创建客户端 Web 套接字之前运行以下命令:

ServicePointManager.MaxServicePointIdleTime = int.MaxValue;