跨域不支持signalr 2.0

本文关键字:signalr 不支持 | 更新日期: 2023-09-27 18:13:27

我有一个应该服务于多个域的signalr 2.0服务器。所以我需要在我的服务器上启用CORS。我使用iis7.5作为web服务器。我在项目的Startup方法中启用了CORS,如下所示

 public void Configuration(IAppBuilder app)
        {
        app.Map("/signalr", map =>
            {
                // Setup the CORS middleware to run before SignalR.
                // By default this will allow all origins. You can 
                // configure the set of origins and/or http verbs by
                // providing a cors options with a different policy.
                map.UseCors(CorsOptions.AllowAll);
                var hubConfiguration = new HubConfiguration
                {
                    // You can enable JSONP by uncommenting line below.
                    // JSONP requests are insecure but some older browsers (and some
                    // versions of IE) require JSONP to work cross domain
                    // EnableJSONP = true
                };
                // Run the SignalR pipeline. We're not using MapSignalR
                // since this branch already runs under the "/signalr"
                // path.
                map.RunSignalR(hubConfiguration);
}
}

这段代码是从本文复制粘贴过来的http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client

我创建了一个本地主机项目并尝试连接到信号服务器。

但是我在firefox中得到以下错误

Cross-Origin Request Blocked: The Same Origin Policy禁止在http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622027746读取远程资源,这可以通过将资源移动到相同的域或启用CORS来修复。谈判

和这个错误在chromeXMLHttpRequest无法加载http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622032883。请求的资源上没有'Access-Control-Allow-Origin'标头。Origin '(我的客户端网站地址)'因此不允许访问

我还添加了以下行到我的web.config

 <httpProtocol>
      <customHeaders>
        <clear />
       <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>

跨域不支持signalr 2.0

尝试在您的配置中删除WebDAV模块:

<configuration>              
    <system.webServer>                   
        <modules>
            <remove name="WebDAVModule" />
...

我今天遇到了这个问题,在摸索了一下之后,发现安装了microsoft . win. cors包为我解决了这个问题。

在Package Manager Console中运行以下命令:

Install-Package Microsoft.Owin.Cors

经过一番努力,我的问题终于解决了。似乎是端口号冲突导致了这个问题。我在我的服务器上停止其他网站,并停止任何其他iis express服务,然后它工作得很好。谢谢你关注我的问题。

在你的Application_Start使用下面的代码使用MapHubs的重载方法

var hubConfiguration = new HubConfiguration();
hubConfiguration.EnableCrossDomain = true;
RouteTable.Routes.MapHubs(hubConfiguration);