cod*_*zoo 23 asp.net asp.net-mvc cors signalr
使用持久连接和ASP.NET JavaScript客户端,我正在尝试连接到与提供页面的子域不同的子域.
来自webserver的ASP.Net页面sub1.mydomain.com想要连接到SignalR sub2.mydomain.com.在同一子域内连接时,相同的代码可以正常工作.
我找到了另一篇文章,其中启用了跨域连接:
jQuery.support.cors = true;
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用.
如何使用持久连接和JavaScript客户端连接到第二个子域中的SignalR?
Pio*_*myd 37
您需要执行以下操作之一才能使其正常工作:
$.connection.hub.url = 'http://subdomain.domain.com/signalr';,指向您的子域.在服务器上启用跨域:
RouteTable.Routes.MapHubs(new HubConfiguration()
{
EnableCrossDomain = true
});
Run Code Online (Sandbox Code Playgroud)Ian*_*cer 11
在当前版本的SignalR中,使用现在单独的CORS包,其API已更改为:
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
};
map.RunSignalR(hubConfiguration);
});
}
Run Code Online (Sandbox Code Playgroud)
请参阅ASP.NET SignalR Hubs API指南 - JavaScript客户端.
如果从0.5.1切换到0.5.2,您可能有以下内容:
$.connection.hub.start({ transport: 'longPolling', xdomain: true }, function () {...
Run Code Online (Sandbox Code Playgroud)
哪个可以改为:
$.connection.hub.start({ jsonp: true }, function () {...
Run Code Online (Sandbox Code Playgroud)