【发布时间】:2016-06-13 15:20:59
【问题描述】:
使用 SignalR,它旨在保持与 Web 服务器的长时间运行连接。但是,我有一个场景,在 ASP.Net 会话过期很久之后,SignalR 连接仍保持与 Web 服务器的开放连接。即使客户端和服务器都没有发送数据,也会发生这种情况。
如何进行设置,以便在 Asp.net 会话到期后,SignalR 连接终止,从而释放服务器上的连接?
这是理想的,因为 Web 服务器在负载均衡器上运行,并且当将服务器从轮换中取出时,我们需要当前连接数来通常表示活动会话的数量 - 而不是仍在踢的 SignalR 连接因为用户打开了浏览器。
【问题讨论】:
-
我曾想过利用集线器授权机制来确保会话处于活动状态,但这有点笨拙——尤其是因为这根本不需要身份验证。我的另一个想法是让客户端自己通过监视会话状态或通过在会话结束时重定向来终止连接,但同样 - 这感觉更像是一种解决方法,而不是适当的解决方案。