Служба HTTP 503 недоступна при попытке просмотра signalr/hubs
У меня есть хостинг-узел SignalR, созданный в VS2012:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
public static class SignalR
{
public static void Start()
{
const string url = "http://*:8080";
WebApp.Start<Startup>(url);
}
}
public class Broadcaster : Hub
{
public void SendDownloadResult(bool result, string device, string description, string connectionId, string task)
{
var context = GlobalHost.ConnectionManager.GetHubContext<Broadcaster>();
context.Clients.Client(connectionId).sendDownloadResult(result, device, description, task);
}
}
Я развернул эту службу Windows на 3 разных ПК, она отлично работает на двух ПК, а с другой, я получаю HTTP 503 Service недоступна, когда я пытаюсь просмотреть http://localhost:8080/signalr/hubs
Никакое исключение не возникает, когда код выполняется на всех трех ПК.
Я проверил возможности IIS в добавлении/удалении окон, они все одинаковы.
Что мне не хватает?
Ответы
Ответ 1
Я смог воспроизвести это локально со следующей установкой:
- Используйте NetSh.exe или аналогичный инструмент для резервирования
http://localhost:8080/
- Вызов
WebApp.Start<Startup>("http://*:8080")
- Перейдите к
http://localhost:8080/
Что происходит, так это то, что Http.Sys принимает входящий запрос, проверяет заголовок хоста, решает, что есть резервирование для localhost: 8080, но понимает, что приложение не слушает localhost: 8080, только *: 8080. Затем Http.Sys возвращает 503.
Решения:
- Попробуйте
WebApp.Start<Startup>("http://+:8080")
- Удалите регистрацию Http.Sys/NetSh
Ответ 2
У меня тоже была такая же проблема. Я исправил его, изменив
const string url = "http://*:8080";
К
const string url = "http://+:8080"; // * replaced by +
Ответ 3
Я также понял, что на одном из компьютеров использовался порт 8080.
Изменение порта из
const string url = "http://*:8080";
к
const string url = "http://*:8088";
решил проблему