4

我在 Azure Web 角色中托管了一个 SignalR 集线器(名为 EventHub),该角色是在 127.0.0.2:81 的模拟器中运行的 MVC 4 应用程序。在我的 Application_Start 中,我有:

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

在通过 IIS 在 localhost:1003 运行的 JS 客户端中,我有:

$.connection.hub.url = 'http://127.0.0.2:81/signalr'; 
$.connection.hub.start().done(alert('connected'));

我的客户端可以连接到集线器并在其上调用方法,但在控制台中,我看到:

XMLHttpRequest cannot load http://127.0.0.2:81/signalr/reconnect?transport=longPolling&connectionToken…&tid=0&_=1380138173967. Origin http://localhost:1003 is not allowed by Access-Control-Allow-Origin.

客户端最终会自行断开连接。如果我使用相同的客户端和几乎相同的集线器实现并在 localhost:62835 的独立 MVC 应用程序中运行它,我根本不会收到跨域错误。我在 Chrome v29 中运行它。我没有指定任何自定义标头,也没有将 jquery cors 支持设置为 true。

天蓝色模拟器是否引起了一些扭结?如果是这样,有什么办法可以解决吗?

更新:

我已将我的 Web 角色发布到 Azure,并且 cors 似乎在该环境中工作。此外,Chrome 现在使用 websockets 进行连接,而不是在连接到模拟器托管站点时尝试的长轮询。

我仍然希望能够通过模拟器运行它以进行本地测试,所以如果有人对如何让它工作有任何想法,我将不胜感激。

4

1 回答 1

0

对于跨域场景,我没有通过本地 IIS express SignalR 应用程序的模拟器和 Windows8 上的最新 Azure SDK 获得任何跨域错误,请确保您的复制器中的模拟器已启动。

于 2013-09-29T06:49:02.650 回答