c# - net - El servicio HTTP 503 no está disponible cuando se intenta navegar por signalr/hubs
signalr js (3)
Tengo un hub de SignalR alojado en Windows creado en 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);
}
}
He implementado este servicio de Windows en 3 PC diferentes, funciona bien en dos PC, pero en el otro, obtengo que el Servicio HTTP 503 no está disponible cuando trato de buscar http://localhost:8080/signalr/hubs
No se lanza ninguna excepción cuando el código se ejecuta en las 3 PC.
He comprobado las características de IIS en las características de agregar / eliminar ventanas, todas son iguales.
¿Qué me estoy perdiendo?
Pude reproducir esto localmente con la siguiente configuración:
- Utilice NetSh.exe o una herramienta similar para reservar
http://localhost:8080/
- Call
WebApp.Start<Startup>("http://*:8080")
- Vaya a
http://localhost:8080/
Lo que sucede es que Http.Sys acepta la solicitud entrante, examina el encabezado del host, decide que hay una reserva para localhost: 8080, pero se da cuenta de que ninguna aplicación está escuchando a localhost: 8080, solo *: 8080. Http.Sys luego devuelve el 503.
Soluciones:
- Pruebe
WebApp.Start<Startup>("http://+:8080")
- Eliminar el registro Http.Sys / NetSh
También me di cuenta, que en una de las PC, el puerto 8080 estaba en uso.
Cambiando el puerto de
const string url = "http://*:8080";
a
const string url = "http://*:8088";
resuelto el problema
También tuve el mismo problema. Lo rectifiqué cambiando
const string url = "http://*:8080";
A
const string url = "http://+:8080"; // * replaced by +