89 votes

Connexion au serveur IIS Express de débogage de Visual Studio via le réseau local (lan)

J'ai une application de test ASP.NET MVC3 développée en VS2012. Lorsque je commence le débogage, l'application est accessible depuis la machine hôte via la requête à http://localhost:<portnumber> . Mais si j'essaie d'accéder à la même application à partir d'une machine distante dans l'intranet via l'interface web de l'entreprise, j'obtiendrai des résultats. http://<ip>:<portnumber> Je reçois HTTP error 400: Bad request. Invalid Host Name. Dans la mesure où il fonctionne sur IIS Express, toute configuration de serveur est inaccessible.

Existe-t-il des moyens de résoudre ce problème ?

143voto

Garrett Fogerlie Points 1940

Mise à jour

J'ai réalisé une vidéo qui décrit mieux le processus, https://youtu.be/5ZqDuvTqQVs

Si vous utilisez Visual Studio 2013 ou supérieur, assurez-vous de l'exécuter en tant qu'administrateur pour que cela fonctionne.


Ouvrez le %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (dans VS2015, cela peut être $(solutionDir)\.vs\config\applicationhost.config ). À l'intérieur, vous devriez voir quelque chose comme ceci :

<site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:8080:localhost" />
    </bindings>
</site>

Changez le bindingInformation=":8080:localhost" a bindingInformation="*:8080:*" (le numéro de port, 8080 dans mon cas, sera différent).

Note : Si cela ne fonctionne pas, essayez avec bindingInformation="*:8080: l'astérisque peut être supprimé.

Vérifiez ensuite que votre pare-feu autorise les connexions entrantes sur ce port. Vous devrez peut-être redémarrer le système ou au moins Visual Studio pour que IISExpress recharge le fichier de configuration.

Si cela ne fonctionne pas, jetez un coup d'œil à cette réponse : https://stackoverflow.com/a/5186680/985284

47voto

gregmac Points 12813

VisualStudio 2015 Non-Admin

  1. Dans le répertoire de votre solution, dans le fichier .vs\config\applicationHost.config changer la ligne

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

    à

    <binding protocol="http" bindingInformation=":44302:" />

    (où 44302 est votre port)

  2. Depuis une invite de commande d'administration :

    i. Permettre aux non-administrateurs de se connecter au port

    netsh http add urlacl url=http://*:44302/ user=Everyone

    ii. Autoriser le passage du pare-feu

    netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow

  3. Démarrer le débogage depuis VisualStudio

22voto

shangkeyun Points 31

En dehors de la modification du fichier de configuration d'iisexpress, il est parfois nécessaire d'exécuter la commande comme ci-dessous.

netsh http add urlacl url=http://\*:49419/ user=Everyone

15voto

oligofren Points 2574

Comment éviter d'exécuter Visual Studio en tant qu'administrateur

En utilisant à la fois Garret's y La réponse de @shangkeyun vous pouvez parvenir à vous connecter au site web en cours d'exécution sans avoir besoin d'exécuter Visual Studio en tant qu'utilisateur administrateur :

  1. Ouvrir %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

  2. Recherchez votre site en utilisant name=MySiteName

  3. Dupliquer l'existant <binding> dans le <bindings> section. Vous devriez maintenant avoir deux lignes avec binding .

  4. Supprimer la partie "localhost" dans bindingInformation.

  5. Il devrait maintenant ressembler à ceci, en supposant que le port est 12345 :

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
  6. Permettre aux non-administrateurs de se connecter au port

    netsh http add urlacl url=http://*:12345/ user=Everyone

EDIT 2019 : gregmac a ajouté une étape pour mettre sur liste blanche l'instance VS. Je n'en ai jamais eu besoin, mais je le liste quand même :

  1. netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow

10voto

hvaughan3 Points 11

Étant donné que je ne suis pas en mesure d'ajouter un commentaire au billet de @Garret Fogerlie et en réponse à la question des commentateurs (@Y.Ecarri et @SamuelEdwinWard), j'ai suivi ce que Garret a suggéré, en utilisant Visual Studio 2013, en l'exécutant en mode Admin et en changeant le fichier application.config archivo.

Après avoir lancé le débogage et constaté que j'obtenais le même message d'erreur, je suis retourné dans la section application.config et j'ai vu qu'une nouvelle entrée pour mon site avait été créée tout comme le numéro de Y.Ecarri.

J'ai donc arrêté de déboguer, j'ai gardé ma solution ouverte dans Visual Studio et a édité le application.config pour la nouvelle entrée. J'ai aussi simplement supprimé le * chante et localhost entièrement, j'avais donc ce qui suit pour la nouvelle entrée :

<binding protocol="https" bindingInformation=":44300:" />

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