У меня есть сервер SignalR, размещенный и работающий в приложении Owin Web API, работающем в Azure (приложение службы компании). Из отдельного веб-приложения, скажем, приложение A (не Azure), я подключаюсь к SignalR с использованием сгенерированных javascript прокси:Проблема с подключением SignalR с обратным прокси/перекрестными доменами
Где CompanyServiceBaseUrl установлен на мой сайт url: (например, "http: // mysite/companyservice")
<script src="@Url.Content(CompanyServiceBaseUrl + "/Scripts/jquery.signalR-2.2.0.js")"></script>
<script src="@Url.Content(CompanyServiceBaseUrl + "/signalr/hubs")" type="text/javascript"></script>
<script type="text/javascript">
var hub = $.connection.perform;
hub.client.onToast = function() {
$("#copyOrganizationSuccessAlert").show();
};
$(document).ready(function() {
var event = document.createEvent('Event');
event.initEvent('onOrganizationLock', true, true);
onOrganizationLockEvent = function() {
document.dispatchEvent(event);
};
hub.client.onOrganizationLock = onOrganizationLockEvent;
});
$.connection.hub.start().done(function() {
hub.server.joinGroup(perform.company.application.clientId);
});
</script>
Вот моя сформированная структура папок в моем клиенте:
когда я проверить локально подключение SignalR работает отлично, но когда я испытываю в моей среде прошла в Азур e невозможно.
SignalR переговоры запрос (между App A и CompanyService):
http://<mysiteurl>/signalr/negotiate
(обратите внимание, что companyservice отсутствует URL:
должно быть:
http://<mysiteurl>/companyservice/signalr/negotiate
Здесь Правило обратного прокси:
<rule name="companyservice" stopProcessing="true">
<match url="^companyservice/(.*)" />
<conditions>
<add input="{CACHE_URL}" pattern="^(https?)://" />
</conditions>
<action type="Rewrite" url="https://myazuresite.azurewebsites.net/{R:1}" />
<serverVariables>
<set name="HTTP_ACCEPT_ENCODING" value="" />
</serverVariables>
</rule>
</rules>
Вопрос:
Почему мой клиент connection.Url приходит как «/ signalr» вместо «/ companyservice/signalr» при тестировании с моей Azure сайта с помощью обратного прокси-сервера?
Наконец, глядя на это сообщил SignalR вопрос, похоже, что он является опыт очень похожий вещь:
SignalR doesn't work behind a Reverse Proxy
Но я хотел бы понять, что он имел в виду:
"Если я использую правило Reverse-Proxy (сканирование и замена) и устанавливаю «Url»: «/ NorthboundWebApiClient/signalr», все работает нормально.
Я попытался установить соединение ction with and without generated proxies с указанием моего URL-адреса подключения вручную var connection = $.hubConnection('/companyservice/signalr', {useDefaultPath: false});
, настройка CORS на стороне клиента и отсутствие удачи.
Вот родственное сообщение проблемы с перекрестными областями:
How do I get a SignalR hub connection to work cross-domain?