Мне удалось заставить его работать, я опубликовал исходный код на GitHub https://github.com/jonathanlarouche/stackoverflow_q58027442
Необходимые пакеты: Веб-приложение Asp.Net со следующими пакетами Nuget:Microsoft.AspNet.SignalR.Core 2.4.1
Microsoft.AspNet.SignalR.JS 2.4.1
Microsoft.AspNet.SignalR.SystemWeb 2.4.0
Microsoft.Owin.Security 2.1.0
Microsoft.Owin 4.0.0
web.config
<system.webServer>
узел. ВАЖНО Access-Control-Allow-Credentials
Требуется при использовании Allow-Origin
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="http://localhost:20700" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Credentials" value="true"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Startup.cs
Файл конфигурации
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
В решении Git я настроил свойПриложение работает под портом 49611
, затем я опубликовал HTML-страницу на пустой веб-сайт, работающий под портом 20700
.Запросы SignalR теперь проходят через порт 49611, и CORS работают.
HTML-код клиента SignalR: (Работает при запуске с http://localhost:20700/ или http://localhost:49611/)
<script type="text/javascript" src="/Scripts/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.signalR-2.4.1.min.js"></script>
<script type="text/javascript" src="http://localhost:49611/SignalR/hubs"></script>
<script type="text/javascript">
...
var ChatProxy;
function Connect() {
ChatServerUrl = "http://localhost:49611/";
var ChatUrl = ChatServerUrl + "signalr";
//This will hold the connection to the signalr hub
SignalrConnection = $.hubConnection(ChatUrl, {
useDefaultPath: false
});
ChatProxy = SignalrConnection.createHubProxy('ChatHub');
}
...
</script>
Загрузите репо ипопробуйте