我正在编写一个Web套接字应用程序,我打算使用Azure Web应用程序在云端托管。
Web套接字是使用相当标准的Owin中间件实现的,并且在前100秒内完全正常运行。在此之后,websocket似乎像发条一样进入中止状态。
[CLIENT][06/04/2018 11:27:21] WS client connected
[CLIENT][06/04/2018 11:29:01] WS client disconnected
在IIS Express实例上尝试此操作会产生同样的问题,尽管延迟似乎是90秒而不是100(这也是一致的)。
作为Owin自主应用程序的一部分运行相同的websocket会产生超过25分钟的稳定性 - 所以这肯定是由托管服务器引起的问题。
在天蓝色网络应用程序托管上我启用了网络套接字,并且还尝试启用“始终开启”功能,希望通过阻止服务器进入待机状态来防止此问题 - 但这不是帮助
是否有任何我不知道的天蓝色设置可以调整,以便这些网络插座可以保持打开更长时间?
非常感谢
答案 0 :(得分:2)
不幸的是,似乎azure和IIS都是红色的鲱鱼,而问题则是使用System.Net.Websockets.ClientWebSocket的C#实现时遇到的问题。详情摘要如下:.NET WebSockets forcibly closed despite keep-alive and activity on the connection
对于遇到此问题的其他人来说,有效(但不理想)的解决方法是在创建客户端Web套接字之前运行以下一次:
ServicePointManager.MaxServicePointIdleTime = int.MaxValue;