J'essaie de tester un site Web en cours d'exécution dans une instance IISExpress locale avec d'autres machines/périphériques de mon réseau local. Je cours Win7 Pro.
Lorsque je tente pour la première fois de naviguer sur ma machine à partir d'une autre machine sur mon segment de réseau local, j'obtiens une erreur 400: le nom d'hôte est invalide.
Je comprends que j’ai besoin d’accorder un accès à distance à la liste de contrôle d’accès à l’aide d’une commande sur la commande élevée, telle que:
netsh http add urlacl url=http://mymachinename:50333/ user=everyone
Maintenant, je reçois une erreur de service 503 indisponible.
Le pare-feu Windows est actuellement désactivé et je peux parcourir mon instance IISExpress locale avec l'adresse http://localhost:50333
Quelle est la dernière pièce de ce puzzle de configuration?
Il semble qu'il manque une information de liaison dans le fichier applicationhost.config.
Ouvrez votre fichier applicationhost.config. Les emplacements possibles sont:
%userprofile%\Documents\IISExpress\config\applicationhost.config
$(solutionDir)\.vs\config\applicationhost.config
(VS2015)iisexpress.exe
Pour en être sûr.Localisez votre entrée WebSite et add suite à la liaison avec votre nom d'ordinateur.
<binding protocol="http" bindingInformation=":50333:your-machine-name" />
Redémarrez IIS Express
Il n'y avait 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, je pouvais me connecter au port, mais j'avais toujours l'erreur "503".
J'ai testé quelques objets localement et découvert que seul http: // localhost fonctionnait. L'utilisation de l'adresse IP réelle (non pas 127.0.0.1, mais par exemple 192.168.1.50), a quand même renvoyé un 503, même sur la machine locale. J'ai essayé d'utiliser le vrai nom d'hôte dans les liaisons, mais IIS Express a refusé de démarrer. Cela peut en fait avoir un lien avec la résolution du nom d'hôte. Je n'ai pas exploré davantage cette tâche. .
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 façon, je pouvais me connecter depuis une machine distante en utilisant http://192.168.1.50:53351
.
Après avoir perdu 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 la mise à jour Web 4 sur Windows 8. C'était mon premier retour sur MS VS depuis des études (au moins 8 ans) et je suis maintenant sûr que les règles de Linux sont respectées. Sur Django ce type de configuration m'a pris 10 minutes de recherche de documentation.
désactiver le pare-feu pour les tests
netsh advfirewall set allprofiles state off
les liaisons d'installation dans mon cas, l'adresse locale est localIP = 192.168.1.102 (car 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>
ajouter un autorun pour ISS Express démarrer le service automatiquement
<site name="NeuronCharts" id="2" serverAutoStart="true">
Ajoutez des règles étranges au serveur http (je ne sais toujours pas si c'est nesseary)
netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
exécuter IISExpress manuellement, pas à partir de VS IDE
http://mylocaldomain.com:53351
si cela fonctionne, nous pouvons ajouter une règle de pare-feuajouter une règle de pare-feu
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
définissez remoteip sur any si vous souhaitez accéder à votre serveur depuis un monde extérieur si vous souhaitez accéder à un réseau local, utilisez localsubnet
démarrer le pare-feu
netsh advfirewall set allprofiles state on
vérifiez à nouveau si tout fonctionne sur l'ip local et public
Je te souhaite bonne chance
Rafal
J'ai trouvé que le problème avait à voir avec une mauvaise cartographie urlacl. Pour comprendre ceci:
netsh http show urlacl
et chercher des choses comme http://+:80/
ou le port auquel vous êtes lié.
Puis utiliser
netsh http delete url=<the url from the list>
Cela a résolu le problème pour moi.
Rien n'a fonctionné pour moi. Enfin j'ai trouvé iisexpress-proxy
Voir ma réponse https://stackoverflow.com/a/33623399/631527
Une autre solution est ngrok
Le problème est la mise à jour du fichier applicationhost.config dans le dossier Web au lieu de celui de la solution. Le fichier de configuration de la solution est celui à modifier
Aucune des réponses ci-dessus n'a fonctionné pour moi.
J'ai eu deux entrées dans netsh pour le même service
netsh http show urlacl
L'un utilisant un caractère générique fort, l'autre utilisant un caractère générique faible.
Enlever celui avec le joker faible a fait le travail.
En savoir plus sur le caractère générique fort et faible dans le contexte de netsh
Lorsque l'élément hôte d'un préfixe Url consiste en un seul signe plus (+), ce préfixe correspond à tous les noms d'hôte possibles dans le contexte de ses éléments schéma, port et URL relative, et entre dans la catégorie des caractères génériques forts.
Lorsqu'un astérisque (*) apparaît en tant qu'élément hôte, le préfixe Url appartient à la catégorie de caractère générique faible. Ce type de préfixe UrlPrefix correspond à tout nom d'hôte associé au schéma, au port et à l'URA relative spécifiés, qui n'ont pas encore été mis en correspondance avec un préfixe générique de caractère générique fort, explicite ou lié à une adresse IP. Cette spécification d'hôte peut être utilisée comme une règle générale par défaut dans certaines circonstances, ou peut être utilisée pour spécifier une grande section d'espace de nom d'URL sans avoir à utiliser de nombreux préfixes d'Url.
https://docs.Microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings
Après la solution de @vikomall, n'oubliez pas de démarrer VS en tant qu'administrateur. Cela corrige ça pour moi.
Concernant la réponse d'Anthony Rizzolo: sous Windows 8.1, je devais taper comme ceci:
netsh http delete urlacl url=<the url from the list>
Par exemple:
netsh http delete urlacl url=http://+:8689/