我有一个信号服务器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
我创建了一个localhost项目并尝试连接到signalr服务器。
但是我在firefox中遇到以下错误
阻止跨源请求:同源策略禁止在http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622027746
读取远程资源。可以通过将资源移动到同一域或启用CORS来解决此问题。谈判
以及Chrome中的此错误
XMLHttpRequest无法加载http://MyWebSite.com:8082/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22sahragostarhub%22%7D%5D&clientProtocol=1.3&_=1405622032883
。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许来源'(我的客户站点地址)'访问
我还将以下行添加到我的web.config
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
这种改变也没用。
答案 0 :(得分:6)
在您的配置中尝试removing WebDAV模块(帮助我一段时间):
<configuration>
<system.webServer>
<modules>
<remove name="WebDAVModule" />
...
答案 1 :(得分:3)
我今天经历过这种情况,经过一番探索后,发现安装Microsoft.Owin.Cors包解决了这个问题。
只需在程序包管理器控制台中运行以下命令:
Install-Package Microsoft.Owin.Cors
构建并重新加载页面。
答案 2 :(得分:1)
最后我的问题在经过多次努力后得到了解决。似乎端口号冲突导致此问题。 我停止在我的服务器上的其他网站,并停止任何其他iis快递服务,然后它工作正常。感谢您关注我的问题。
答案 3 :(得分:0)
在Application_Start中使用下面的代码使用MapHubs的重载方法
var hubConfiguration = new HubConfiguration();
hubConfiguration.EnableCrossDomain = true;
RouteTable.Routes.MapHubs(hubConfiguration);