我们的asp.net mvc应用程序带有在IIS上托管的SignalR集线器。我们将其命名为SignalR Service。某些内部服务可以向SignalR服务发送请求,以通知外部客户端任何事件。查看SignalR服务的连接状态对外部客户来说非常重要。并且必须尽快通知客户SignalR服务不可用,以便客户知道他们不会收到任何通知。
当我在IIS上停止SignalR服务时,问题就开始了。由于在停止客户端连接后存在SignalR服务的进程,因此不会丢弃。因此,客户无法识别该网站已停止。由于站点已停止,因此内部服务无法访问,并且他们无法向外部客户端发送任何通知。
所有服务的行为都是预期的,但它并不适合我们的业务逻辑。
在IIS上停止时,我们可以做些什么来使SignalR服务断开连接? IIS上的网站工作流程是否完全是个好主意?
答案 0 :(得分:0)
请在IIS停止和启动时找到以下答案,了解如何断开所有僵尸连接。
注意:重新启动AppPool时,会触发重新连接事件。但是,当您重新启动网站时,全新的应用程序周期开始,在这种情况下,您使用HubPresence监视器,它将物理连接(在内存对象中)与存储的数据库连接进行比较。
为SignalR构建一个简单的在线管理器, https://patdunn.net/2015/05/05/building-a-simple-presence-manager-for-signalr/
让我知道它是否有帮助或您已确定的任何其他可能的解决方案。感谢。