J'essaie de tester un site Web exécuté dans une instance IISExpress locale avec d'autres machines / appareils sur mon réseau local. J'utilise Win7 Pro.
Lorsque je tente pour la première fois de parcourir 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 un 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 est 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?
la source
http://mymachinename:50333/
depuis votre ordinateur?Réponses:
Il semble qu'il vous manque une entrée d'informations 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 être sûr.Localisez votre entrée de site Web et ajoutez liaison suivante avec le nom de votre ordinateur.
Redémarrez IIS Express
la source
iisexpress.exe
attentivement la sortie de pour voir quel fichier de configuration il utilise.Il n'y avait qu'une seule chose qui fonctionnait pour moi.
en utilisant
*:portnumber:*
n'était pas bonne. 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'ai toujours l'erreur «503».J'ai testé quelques éléments localement et j'ai découvert que seul http: // localhost fonctionnait. L'utilisation de l'adresse IP réelle (pas 127.0.0.1, mais, par exemple, 192.168.1.50), renvoyait toujours 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 quelque chose à voir avec la façon dont le nom d'hôte a été résolu. Je n'ai pas exploré cela davantage.
Enfin, j'ai fini par utiliser cette configuration:
De cette façon, j'ai pu me connecter à partir d'une machine distante en utilisant
http://192.168.1.50:53351
.la source
<binding protocol="https" bindingInformation="*:44300:*" />
<binding protocol="http" bindingInformation="*:8888:*" />
edit: vraiment essayé de comprendre SO markdown, j'ai quitté :).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 maintenant je suis sûr que Linux est régi. Sur django, ce type de configuration m'a pris 10 minutes de recherche de documentation.
désactiver le pare-feu pour les tests
les liaisons de configuration 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
ajouter automatiquement le service de démarrage automatique pour ISS Express
Ajoutez des règles étranges au serveur http (je ne sais toujours pas si c'est bon)
exécuter IISExpress manuellement pas depuis VS IDE
http://mylocaldomain.com:53351
s'il fonctionne, nous pouvons ajouter une règle de pare-feuajouter une règle de pare-feu
définissez remoteip sur any si vous souhaitez accéder à votre serveur depuis le monde extérieur si vous souhaitez accéder au réseau local utilisez localsubnet
démarrer le pare-feu
vérifiez à nouveau si tout fonctionne sur IP locale et publique
Je te souhaite bonne chance
Rafal
la source
netsh http delete urlacl url=http://*:55416/
(remplacez le port par votre port)localhost
. Je trouve que le nom de la machine invité (Windows) nécessaire pour être dans les liaisons dansapplicationhost.config
et sur l'hôte (Mac) le nom de la machine invité nécessaire pour être mis en correspondance127.0.0.1
dans/etc/hosts
. Ce n'est qu'alors qu'une demande adressée à la machine invitée sur l'hôte a réussi.J'ai trouvé que le problème était lié à un mauvais mappage d'URL. Pour comprendre ceci:
et recherchez des choses comme
http://+:80/
ou le port auquel vous vous engagez.Ensuite, utilisez
Cela a résolu le problème pour moi.
la source
netsh http delete urlacl <yoururl>
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
la source
3028
. J'ai couruiisexpress-proxy 3028 to 12345
et puis./ngrok.exe http 12345
. 😅Ce qui m'a aidé, c'est un clic droit sur l'icône «IISExpress», «Afficher toutes les applications». Ensuite, en sélectionnant le site Web et j'ai vu quel aplicationhost.config il utilise, et la correction s'est parfaitement déroulée.
la source
Le problème est de mettre à jour le fichier applicationhost.config dans le dossier Web au lieu de celui de la solution. Le fichier de configuration de la solution est celui à modifier
la source
Après la solution de @vikomall, n'oubliez pas de démarrer VS en tant qu'administrateur. Cela corrige ça pour moi.
la source
Concernant la réponse d'Anthony Rizzolo: sous Windows 8.1, je devais taper comme ceci:
Par exemple:
la source
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 joker fort, l'autre utilisant un joker faible.
La suppression de celui avec le caractère générique faible a fait le travail.
En savoir plus sur le joker fort et faible dans le contexte de netsh
https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings
la source