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:
- En
Main
of Program.cs (para la aplicación de consola):WebApp.Start<Startup>("http://*:8080");
- Desde el símbolo del sistema de Windows (ejecutar como administrador) ingrese
netsh http add urlacl http://*:8080/ user=EVERYONE
- 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"
};