在 IIS 上停止站点后,SignalR 客户端不会断开连接



我们有 asp.net mvc 应用程序,其中包含在 IIS 上托管的 SignalR 集线器。让我们将其命名为 SignalR Service。某些内部服务可以向 SignalR 服务发送请求,以通知外部客户端有关任何事件的信息。外部客户端必须查看与 SignalR 服务的连接状态。并且必须尽快通知客户端 SignalR 服务不可用,以便客户端知道他们不会收到任何通知。

当我在 IIS 上停止 SignalR 服务时,问题开始。由于 SignalR 服务的进程在停止后存在,因此不会丢弃客户端的连接。因此,客户端无法识别该站点已停止。由于站点已停止,内部服务无法访问它,并且它们无法向外部客户端发送任何通知。

因此,所有服务的行为都是预期的,但它不适合我们的业务逻辑。

当 IIS 上停止时,我们可以执行哪些操作来使 SignalR 服务断开连接?IIS 上的网站的工作流程到底是个好主意吗?

请在下面找到答案,以了解如何在IIS停止和启动时断开所有僵尸连接。

注意:重新启动应用程序池时,将触发重新连接事件。但是当您重新启动网站时,全新的应用程序周期开始,在这种情况下,您使用 HubPresence 监视器,它将物理连接(在内存对象中)与存储的数据库连接进行比较。

为 SignalR 构建一个简单的状态管理器, https://patdunn.net/2015/05/05/building-a-simple-presence-manager-for-signalr/

让我知道它是否有帮助或您确定的任何其他可能的解决方案。谢谢。

最新更新