signalr acl nancy self-hosting owin

signalr - Auto alojado OWIN y urlacl



nancy self-hosting (3)

Gracias a la información que me proporcionó @ kay.one, pude acceder a mi API Web 2.2 (OWIN / Katana, aplicación de consola) auto-hospedada desde la misma máquina a través de la dirección IP. Sin embargo, simplemente consolídelo en un simple paso a paso:

  1. En Main of Program.cs (para la aplicación de consola): WebApp.Start<Startup>("http://*:8080");
  2. Desde el símbolo del sistema de Windows (ejecutar como administrador) ingrese netsh http add urlacl http://*:8080/ user=EVERYONE
  3. Vaya al Firewall de Windows con seguridad avanzada y agregue una Regla de entrada que abra el puerto TCP 8080

Entonces debería poder acceder desde otra máquina usando la dirección IP o el nombre de la computadora.

Descargo de responsabilidad: no soy un experto en seguridad, por lo que no sé las implicaciones de seguridad de hacer esto.

He creado una aplicación Nancy / SignalR auto hospedada en OWIN utilizando Microsoft.Owin.Host.HttpListener y Microsoft.Owin.Hosting

Las cosas funcionan perfectamente bien localmente, pero tan pronto como trato de usar algo que no sea localhost para acceder a la aplicación, obtengo un HTTP Error 503. The service is unavailable . Ni siquiera puedo acceder a la aplicación utilizando 127.0.0.1 o el nombre de la máquina.

He intentado agregar el puerto a urlacl usando

http add urlacl http://*:8989/ user=EVERYONE pero no parece hacer nada.

Aquí están las opciones de inicio de OWIN que he probado,

var options = new StartOptions { Url = "127.0.0.1", App = GetType().AssemblyQualifiedName, Port = _configFileProvider.Port }; var options = new StartOptions { App = GetType().AssemblyQualifiedName, Port = _configFileProvider.Port };

Este es el código fuente del archivo que inicia y detiene el servidor https://github.com/NzbDrone/NzbDrone/blob/vnext/NzbDrone/Owin/OwinHostController.cs


Paso muchas horas resolviendo un problema similar en Windows 8.1.

StartOptions options = new StartOptions(); options.Urls.Add("http://localhost:9000"); options.Urls.Add("http://127.0.0.1:9000"); options.Urls.Add("http://192.168.0.102:9000"); options.Urls.Add(string.Format("http://{0}:9000", Environment.MachineName)); WebApp.Start<Startup>(options);

No pude escuchar o estaba recibiendo el error 503 ...

Si desea escuchar en varias direcciones IP, cada dirección necesita su propio registro urlacl:

No funciona:

netsh http>add urlacl http://+:9000/ user=EveryOne

DE ACUERDO:

netsh http>add urlacl http://localhost:9000/ user=EveryOne netsh http>add urlacl http://127.0.0.1:9000/ user=EveryOne etc.

Después de agregar la reserva para cada dirección individualmente, todo funciona bien.


por lo que resulta que necesita pasar una url a StartOptions en el mismo formato que urlacl.

Cambiar las opciones de inicio al código siguiente solucionó el problema. ahora la aplicación es accesible a través de la red.

var options = new StartOptions("http://*:8989") { ServerFactory = "Microsoft.Owin.Host.HttpListener" };