应用程序池回收后无法重新连接SignalR JS客户端

时间:2013-04-18 16:12:11

标签: asp.net-web-api signalr signalr-hub

当我为运行SignalR集线器的站点回收我的应用程序池时,javascript客户端无法重新连接。但如果客户端在浏览器上刷新,一切都会好的。

在客户端控制台日志中,这些行在重置应用程序池后每秒重复多次:(我已用abcd替换了连接令牌)

LOGG: [15:51:19 UTC+0200] SignalR: Raising the reconnect event  
LOGG: [15:51:19 UTC+0200] SignalR: An error occurred using longPolling. Status = parsererror. undefined  
LOGG: [15:51:19 UTC+0200] SignalR: SignalR: Initializing long polling connection with server.  
LOGG: [15:51:19 UTC+0200] SignalR: Attempting to connect to 'http://lab/signalr/reconnect?transport=longPolling&connectionToken=abcd' using longPolling. 
LOGG: [15:51:19 UTC+0200] SignalR: Raising the reconnect event 

我尝试在集线器上禁用所有身份验证,但结果仍然相同。 服务器和客户端都在SignalR v1.0.1上运行

客户端上的hubconnection设置如下:

var connection = $.hubConnection('http://lab:8097', { logging: true });
var proxy = connection.createHubProxy('task');
connection.start({ jsonp: true }).done(function () {
    proxy.invoke('OpenTask', id);
});

我还在服务器端集线器注册上使用了crossdomain:

RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });

服务器在IIS 7.5上运行,客户端是IE9。

任何人都知道出了什么问题?

1 个答案:

答案 0 :(得分:3)

这个问题将在1.1 RTW中解决(尚未发布,目前只有beta版已经发布)。

以下是您的参考修正:https://github.com/SignalR/SignalR/issues/1809。如果您想提前修复此问题,可以执行问题中提到的更改。

最后,如果您确实选择实施此修复,则需要在连接上处理.disconnected事件并完全重新启动连接。