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



当我为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

客户端的hub连接是这样设置的:

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

我也在服务器端使用跨域集线器注册:

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

服务器是IIS 7.5,客户端是IE9。

有人知道是怎么回事吗?

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

供您参考,这里是修复:https://github.com/SignalR/SignalR/issues/1809。如果您希望更早获得修复,您可以实现问题中所述的更改。

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

最新更新