189 votes

IISExpress renvoie une erreur 503 à partir de machines distantes

J'essaie de tester un site Web que j'ai lancé dans une instance locale de IISExpress avec d'autres machines/appareils sur mon réseau local. J'utilise Win7 Pro.

Lorsque je tente pour la première fois de naviguer vers ma machine à partir d'une autre machine sur mon segment de réseau local, j'obtiens une erreur 400 : Le nom d'hôte n'est pas valide.

Je comprends que je dois accorder l'accès à distance à l'ACL avec une commande sur l'invite de commande élevée comme :

netsh http add urlacl url=http://mymachinename:50333/ user=everyone

Maintenant je reçois une erreur 503 service is unavailable.

Le pare-feu de Windows est actuellement désactivé, et je suis en mesure de naviguer dans mon instance locale IISExpress avec l'adresse http://localhost:50333

Quelle est la dernière pièce de ce puzzle de configuration ?

1 votes

Que se passe-t-il si vous naviguez vers http://mymachinename:50333/ de votre ordinateur ?

1 votes

Le problème a été résolu. Voir la réponse acceptée de vikomall

1 votes

Une discussion plus approfondie à ce sujet ici : hanselman.com/blog/

278voto

vikomall Points 9130

Il semble qu'il vous manque une entrée d'informations de liaison dans le fichier applicationhost.config.

  1. Ouvrez votre fichier applicationhost.config. Les emplacements possibles sont :

    • %userprofile%\Documents\IISExpress\config\applicationhost.config
    • $(solutionDir)\.vs\config\applicationhost.config (VS2015)
    • Si ce n'est pas le cas, inspectez la sortie de iisexpress.exe pour être sûr.
  2. Localisez votre entrée WebSite et ajouter la reliure suivante avec le nom de votre machine.

         <binding protocol="http" bindingInformation=":50333:your-machine-name" />
  3. Redémarrer IIS Express

0 votes

Hourra ! Après près de deux heures passées à essayer de faire fonctionner le système entre une machine virtuelle Windows 7 fonctionnant sous Parallels Desktop 6 et mon hôte Mac OS, j'ai finalement réussi à le faire fonctionner. Il me manquait la dernière pièce du puzzle. C'est génial. Maintenant, je peux tester mon site ASP.NET MVC 3 fonctionnant dans IIS Express sous Mac OS également.

1 votes

Juste pour mentionner : ce post a fourni une bonne quantité d'informations relatives à la configuration dont j'avais besoin : blogs.iis.net/vaidyg/archive/2010/07/29/

9 votes

Pas grave. Visual Studio a créé une entrée de configuration en double pour l'élément. Je l'ai supprimé et ça a marché.

34voto

The Lizard Points 478

Il n'y a qu'une seule chose qui a fonctionné pour moi.

en utilisant *:portnumber:* n'était pas bon. Oui, après avoir fait cela et m'être assuré que le pare-feu Windows était ouvert, j'ai pu me connecter au port, mais j'ai toujours l'erreur "503".

J'ai testé quelques trucs localement, et j'ai découvert que seul http://localhost travaillé. L'utilisation de la véritable adresse IP (pas 127.0.0.1, mais, par exemple, 192.168.1.50) renvoie toujours un 503, même sur la machine locale. J'ai essayé d'utiliser le nom d'hôte réel dans les liens, mais IIS Express a refusé de démarrer. Cela peut avoir un rapport avec la façon dont le nom d'hôte est résolu. Je n'ai pas approfondi la question.

Finalement, j'ai fini par utiliser cette configuration :

<binding protocol="http" bindingInformation="*:53351:localhost" />
<binding protocol="http" bindingInformation="192.168.1.50:53351:*" />

De cette manière, j'ai pu me connecter depuis une machine distante en utilisant http://192.168.1.50:53351 .

0 votes

J'ai rencontré cette erreur exacte, mais je ne voulais pas coder en dur l'IP actuelle dans la configuration, car elle peut changer. J'ai découvert que le caractère générique fonctionne sur les parties IP et nom d'hôte, et j'ai donc obtenu : <binding protocol="https" bindingInformation="*:44300:*" /> <binding protocol="http" bindingInformation="*:8888:*" /> edit : vraiment essayé de comprendre SO markdown, j'ai abandonné :).

19voto

Rafal Points 1

Après avoir passé plus de 3h sur un sujet aussi complet, j'ai décidé de partager ma configuration avec vous. Ma configuration est Visual Express 2012 pour Web update 4 sur Windows 8. C'était mon premier retour à MS VS depuis mes études (au moins 8 ans) et maintenant je suis sûr que linux règne. Sur django ce genre de configuration m'a pris 10min de recherche dans la documentation.

  1. désactiver le pare-feu pour les tests

    netsh advfirewall set allprofiles state off
  2. configuration des bindings dans mon cas l'adresse locale est localIP=192.168.1.102 (parce que les liens ne peuvent pas contenir de domaine non numérique, utilisez-le ci-dessous au lieu de mylocaldomain.com, voir la politique de stackoverflow) dans Documents\IISExpress\config\applicationhost.config

    <bindings>
        <binding protocol="http" bindingInformation="*:53351:mylocaldomain.com" />
        <binding protocol="http" bindingInformation="*:53351:localhost" />
    </bindings>
  3. ajouter autorun pour que le service ISS Express démarre automatiquement

    <site name="NeuronCharts" id="2" serverAutoStart="true">
  4. Ajouter quelques règles bizarres au serveur http (je ne sais toujours pas si c'est nécessaire)

    netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
  5. exécuter IISExpress manuellement et non à partir de l'IDE VS

  6. vous verrez qu'ISSExpress enregistre les liens.

  7. exécuter le navigateur http://mylocaldomain.com:53351 Si cela fonctionne, nous pouvons ajouter une règle de pare-feu.

  8. ajouter une règle de pare-feu

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow

définir remoteip à any si vous voulez accéder à votre serveur depuis le monde extérieur si vous voulez accéder au réseau local utilisez localsubnet

  1. démarrer le pare-feu

    netsh advfirewall set allprofiles state on
  2. vérifiez à nouveau si tout fonctionne sur l'ip locale et publique

Je vous souhaite bonne chance

Rafal

3 votes

Cela a fait que IIS Express ne fonctionne plus sur Win8 avec VS2013 sans exécuter VS2013 en tant qu'administrateur. Cela est dû au fait que IIS Express essaie maintenant de s'ouvrir au trafic externe à la suite de la commande netsh. Je n'ai jamais réussi à faire en sorte qu'il serve ce trafic ; j'obtenais un message 503. Pour annuler le problème causé par la commande netsh dans cette réponse, exécutez cette commande à partir d'une invite de commande en tant qu'administrateur : netsh http delete urlacl url=http://*:55416/ (remplacez le port par votre port)

0 votes

Pour info, je n'ai pas besoin de l'étape 4 (l'appel netsh dont @Rafal n'est pas sûr qu'il soit nécessaire) et, bien que je n'aie pas besoin de la liaison "localhost" à l'étape 2 pour exécuter les projets VS2013 dans ma solution, la partie frontale se charge de manière significative plus rapidement lorsque la liaison "localhost" est laissée en place.

0 votes

J'ai constaté que si l'on suit les instructions ci-dessus, on obtient toujours 503 en utilisant la fonction localhost . J'ai constaté que le nom de la machine invitée (Windows) devait figurer dans les liens dans le dossier de l'utilisateur. applicationhost.config et sur l'hôte (Mac), le nom de la machine invitée devait être mappé sur 127.0.0.1 en /etc/hosts . Ce n'est qu'ensuite qu'une demande à la machine invitée sur l'hôte a réussi.

10voto

Anthony Rizzolo Points 101

J'ai découvert que le problème venait d'un mauvais mappage d'urlacl. Pour résoudre ce problème :

netsh http show urlacl 

et cherchez des choses comme http://+:80/ ou le port auquel vous êtes lié.

Ensuite, utilisez

netsh http delete url=<the url from the list>

Cela a réglé le problème pour moi.

4 votes

Devrait être netsh http delete urlacl url=<l'url de la liste> , cela a fonctionné pour moi merci !

1 votes

Ce point est abordé plus en détail dans la section blog msdn . C'était aussi mon problème.

3 votes

Merci, la syntaxe exacte est netsh http delete urlacl <yoururl>

7voto

Toolkit Points 141

Rien n'a fonctionné pour moi. Finalement, j'ai trouvé iisexpress-proxy

Voir ma réponse https://stackoverflow.com/a/33623399/631527

Une autre solution est ngrok

0 votes

Incroyable ! J'ai essayé toutes ces autres solutions et elles n'ont pas fonctionné non plus. "Mauvaise demande" ou "Service indisponible". Trop compliqué. J'ai installé le module node et je l'ai lancé, ça marche instantanément ! !!

0 votes

Ça marche ! Sacrément ! Merci !

0 votes

Consultez aussi ngrok

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X