ПРИМЕЧАНИЕ. Кто-то изначально задал этот вопрос, но удалил его, прежде чем я смог опубликовать свой ответ. Поскольку этот вопрос охватывает многие проблемы, с которыми сталкиваются разработчики при попытке заставить SignalR работать в междоменном пространстве, я решил его повторить. Кроме того, я уже написал ответ!
Я запускаю сервер SignalR 1.0.1 в проекте ASP.NET MVC.NET Framework 4. У меня есть другое приложение ASP.NET в другом домене (другой локальный порт), пытающийся подключиться через клиент JavaScript. Я получаю это, когда мое приложение пытается подключиться:
XMLHttpRequest cannot load http://localhost:31865/api/negotiate?_=1363105027533.
Origin http://localhost:64296 is not allowed by Access-Control-Allow-Origin.
Я выполнил все шаги, чтобы включить поддержку междоменной поддержки с помощью SignalR - что мне не хватает?
-
jQuery.support.cors = true;
-
$.connection('http://localhost:31865/api', '', false, { jsonp: true, xdomain: true });
-
RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
-
RouteTable.Routes.MapConnection<ApiConnection>("/api", "api");
Я также добавил в проект Web.config следующее:
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
</system.webServer>
Я использую PersistentConnection для моего сервера SignalR, а не концентраторы.
Любые идеи?