Auto hébergé OWIN et urlacl

J'ai créé une application auto-hébergée Nancy/SignalR auto-hébergée à OWIN en utilisant Microsoft.Owin.Host.HttpListener et Microsoft.Owin.Hosting

les choses fonctionnent parfaitement bien localement mais dès que j'essaie d'utiliser n'importe quoi sauf localhost pour accéder à l'application je reçois un HTTP Error 503. The service is unavailable erreur. Je ne peux même pas accéder à l'application en utilisant 127.0.0.1 ou le nom de la machine.

j'ai essayé d'ajouter le port à urlacl en utilisant

http add urlacl http://*:8989/ user=EVERYONE, mais ne semble pas faire quoi que ce soit.

voici les options de démarrage de OWIN J'ai essayé,

        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
        };

voici le code source du fichier qui démarre et arrête le serveur https://github.com/NzbDrone/NzbDrone/blob/vnext/NzbDrone/Owin/OwinHostController.cs

22
demandé sur kay.one 2013-05-20 08:32:26

3 réponses

il s'avère donc que vous devez passer dans une url en StartOptions dans le même format que l'urlacl.

changer les options de démarrage au code ci-dessous a corrigé le problème. maintenant, l'application est accessible à travers le réseau.

  var options = new StartOptions("http://*:8989")
  {
      ServerFactory = "Microsoft.Owin.Host.HttpListener"
  };
27
répondu kay.one 2013-10-02 20:06:34

je passe de nombreuses heures à résoudre un problème similaire sur 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);

Je ne pouvais pas écouter ou j'ai eu une erreur 503...

si vous voulez écouter sur plusieurs adresses IP, chaque adresse a besoin de son propre enregistrement urlacl:

ne fonctionne pas:

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

OK:

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

après avoir ajouté la réservation pour chaque adresse individuellement, tout fonctionne très bien.

11
répondu Milan Švec 2014-08-12 13:21:17

merci à l'info que @kay.une à condition que j'ai pu accéder à mon API Web auto-hébergée 2.2 (OWIN/Katana, application console) à partir de la même machine via une adresse IP. Cependant, les consolider en un simple étape par étape:

  1. Main de Programme.cs (pour console app):WebApp.Start<Startup>("http://*:8080");
  2. à Partir de Windows Invite de Commande (exécuter en tant qu'Administrateur) entrez netsh http add urlacl http://*:8080/ user=EVERYONE
  3. pare-feu Windows avec une sécurité avancée et ajouter une règle entrante qui s'ouvre TCP port 8080

vous devriez alors pouvoir accéder à partir d'une autre machine en utilisant L'adresse IP ou le nom de l'ordinateur.

avertissement: Je ne suis pas un expert en sécurité donc je ne connais pas les implications de sécurité de faire cela.

7
répondu BCA 2016-06-07 15:28:37