2017-04-18 38 views
0

我有一个应用程序,其中有一个服务器和几个客户端通过信号连接。该服务器是一个在Win 2012R2,IIS 8.5中托管的asp.net应用程序。最近我发现了一个问题,当我实际上停止IIS管理器的网站时,客户端并未触发断开连接。它一直发送keepalive ping到服务器,虽然我已经停止它从IIS。但是,当我回收应用程序池时,连接触发断开连接。这是signalr的正常行为还是应该在服务器被IIS停止时触发客户端的断开连接?IIS停止后,Signalr不触发断开连接

SignalR版本 - 2.2.1

+0

如何阻止IIS? –

+0

我不停止IIS。我通过单击该站点停止IIS管理器的站点并停止。 – janitha000

回答

2

我认为,停止该网站是不是一个“正常”的方式,让客户SignalR不通知,因此他们继续发送保活消息发送到服务器。这与应用程序池回收相反,它允许进程正常结束(关闭期)。

检查this article来看看如何实现一种机制来解决这个问题:

当你的SignalR应用的增长,你会发现自己想处理存在管理更复杂的方式。默认情况下,SignalR自己的状态管理是内存中的。因此,如果您的服务器重新启动,或者您正在Web场环境中运行,则无法正确维护您的连接

什么使得良好的状态管理系统成为可能?

[...] 删除僵尸连接。您需要确保您连接到 所有断开连接事件,以便更新数据库中的 用户连接。

相关问题