我用SignalR长时间轮询.我发现在基于singalr的网页进行/ signar / ping请求(
as shown in this screenshot)之后,用户会话结束(ASP.NET Session_End正在被调用).我经历了
http://www.asp.net/signalr/overview/signalr-20/hubs-api/handling-connection-lifetime-events,但无法明确答案.
>如何让一个信号客户端网页上的ASP.net用户会话活着?
> ping的实际目的是什么?
>这个/ ping呼叫的时间是否可配置?
解决方法
/ signalr / ping请求的整个目的是保持ASP.NET会话活动.通过以比会话超时更短的定期间隔发出请求,会话永远不会过期,因为服务器应该重置每个请求的超时.
在长时间轮询传输的情况下,这可能是不必要的,因为SignalR将在给定默认配置的情况下至少每110秒强制一次新的长轮询.即使如此,SignalR将默认发出每5分钟的ping请求,无论使用什么传输.这5分钟的时间间隔足以处理ASP.NET默认的20分钟会话超时.
您可以在调用$.connection.hub.start时将5分钟ping间隔更改为自定义值,如下所示:
// Configure SignalR to ping the server every minute $.connection.hub.start({ pingInterval: 60000 })//...
默认的pingInterval是300000毫秒(5分钟).您可以通过将pingInterval设置为null来禁用ping.