[英]SignalR webapp under IIS7.5 don't works on Firefox access from other webapp(cross-domain)
我正在IIS 7.5下测试SignalR(1.1.0)聊天示例。
我正在尝试从其他Web应用程序连接到我的SignalR Webapp(跨域)。
我已经在web.config上进行了跨域配置,这在asp.net开发服务器上可以正常工作,并且已在global.asax上启用了cors。
但是,当我将此项目部署到IIS 7.5时,此方法不起作用。 然后,我注意到它仅在IE 8中有效,而在Firefox中无效。
我进行了如下连接:
var connection = $.hubConnection('http://my.webserver.ip/sincronismoSR'),
chatHubProxy = connection.createHubProxy('chatHub');
connection.start().done(function() {
$('#sendmessage').click(function () {
chatHubProxy.invoke('Send', $('#displayname').val(), $('#message').val());
$('#message').val('').focus();
});
});
我查看了发出的请求,它得到200响应,但答案为空。
Claudio,我们在一个项目中使用了SignalR,效果很好。 不幸的是,我的研究不够好。 我以为SignalR在浏览器支持时就是websockets,但其后果是,因为我们在2008 R2服务器上运行.NET 4.0,所以我们再也没有websockets了。
SignalR Websocket传输需要.NET 4.5,IIS8、2012Server / Win8,而对于我们的项目(尚不可接受)。
我环顾四周,发现.NET堆栈上有一些替代方法。 最终,我们决定使用xsockets.NET( http://xsockets.net ),此后再也没有回头。 从SignalR迁移到xsockets确实很容易,并且xsockets在所有平台上都具有websocket支持。 还支持Mono。
唤醒我们的是信号器与xsocket之间的比较: http ://xsockets.net/xsockets-vs-signalr
但是,SignalR上没有阴影。 这是一个很好的选择,但由于服务器要求而不适用于我们。 糟糕的是,社区似乎一直认为SignalR一直是实时的。 但是正如我说的那样,我们只能自责,因为我们没有足够好地阅读文档并浪费了很多时间:(
祝你好运
我找到了解决方案,但是我不明白为什么,当我使用Firefox时,如果没有设置,就不会选择正确的传输方式。
var connection = $.hubConnection('http://my.webserver.ip/sincronismoSR'),
chatHubProxy = connection.createHubProxy('chatHub');
connection.start({ transport: ['webSockets', 'longPolling'] }).done(function() {
$('#sendmessage').click(function () {
chatHubProxy.invoke('Send', $('#displayname').val(), $('#message').val());
$('#message').val('').focus();
});
});
因此,此{ transport: ['webSockets', 'longPolling'] }
配置解决了我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.