tutorial signal net example c# .net windows-services signalr

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:

  1. Utilice NetSh.exe o una herramienta similar para reservar http://localhost:8080/
  2. Call WebApp.Start<Startup>("http://*:8080")
  3. 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:

  1. Pruebe WebApp.Start<Startup>("http://+:8080")
  2. 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 +