web-dev-qa-db-fra.com

Connexion au débogage Visual Studio IIS Serveur express sur le réseau local

J'ai une application de test ASP.NET MVC3 développée dans VS2012. Lorsque je commence le débogage, l'application est accessible à partir de la machine hôte via la demande à http://localhost:<portnumber>. Mais si j'essaie d'accéder à la même application à partir de la machine distante dans l'intranet via le http://<ip>:<portnumber>, je reçois HTTP error 400: Bad request. Invalid Host Name. Tant qu'il s'exécute sur IIS Express, toute configuration de serveur est inaccessible.

Y at-il des moyens de résoudre ce problème?

70
gator88

Mettre à jour

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

Si vous utilisez VS2013 ou une version ultérieure, assurez-vous de l'exécuter en tant qu'administrateur pour que cela fonctionne.


Ouvrez le fichier %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (dans VS2015, il peut s'agir de $(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" en 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érix peut être supprimé.

Assurez-vous 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 Studios pour que IISExpress recharge le fichier de configuration.

Si cela ne fonctionne pas, jetez un oeil à cette réponse: https://stackoverflow.com/a/5186680/985284

121
Garrett Fogerlie

VisualStudio 2015 non-administrateur

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

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

    à

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

    (où 44302 est votre port)


  1. À partir d'une invite de commande d'administration:

    je. Activer les non-administrateurs pour qu'ils se lient au port

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

    ii. Autoriser à travers le pare-feu 

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


  1. Démarrer le débogage à partir de VisualStudio
27
gregmac

Hormis pour modifier le fichier de configuration iisexpress, vous devez parfois exécuter la commande comme ci-dessous.

netsh http add urlacl url = http: // *: 49419/user = Tout le monde

19
shangkeyun

Étant donné que je ne peux pas ajouter de commentaire au message de @Garret Fogerlie et en réponse au problème des commentateurs (@ Y.Ecarri et @SamuelEdwinWard), j'ai suivi ce que Garret avait suggéré, à l'aide de Visual Studio 2013, en l'exécutant en mode Admin et en modifiant les paramètres. application.config fichier.

Après avoir lancé le débogage et constaté que le même message d'erreur apparaissait, je suis retourné dans application.config et constaté qu'une nouvelle entrée pour mon site avait été créée, à l'instar du problème de Y.Ecarri.

J'ai donc arrêté le débogage, gardé ma solution ouverte dans Visual Studio , et modifié à nouveau le fichier application.config pour la nouvelle entrée. J'ai également simplement supprimé le * qui chante et le localhost entièrement, donc j'avais les éléments suivants pour la nouvelle entrée:

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

10
hvaughan3

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

En utilisant à la fois la réponse de Garret et @ shangkeyun , vous pouvez vous connecter au site Web en cours d'exécution sans avoir à exécuter Visual Studio en tant qu'administrateur:

  1. Ouvrez %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. Recherchez votre site en utilisant name=MySiteName
  3. Dupliquez l'élément <binding> existant dans la section <bindings>. Vous devriez maintenant avoir deux lignes avec binding.
  4. Supprimez la partie "localhost" dans bindingInformation.
  5. Cela devrait maintenant ressembler à ceci, en supposant que le port est 12345:

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
  6. Supprimez toutes les restrictions de pare-feu en exécutant la commande suivante en tant qu'administrateur:

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

Merci à byteit:

Accédez à applicationhost.config dans Documents/IISExpress/config.

recherchez l'entrée correspondant au site sur lequel vous travaillez:

ajouter: 

<binding protocol="http" bindingInformation="*:<your site port>:*" />

devant l'existant

 <binding protocol="http" bindingInformation="*:<your site port>:localhost" />

Pour obtenir la solution sans avoir VS2013, créez une nouvelle entrée XML de site Web au redémarrage. Vous devrez exécuter en tant qu'administrateur.

1
Isaac Bolinger

Si le problème était très similaire, le débogage dans Code Visual Studio , je l’ai résolu en ajoutant:

"env": {
      // ...
      "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using
      // ...
},

.. à launch.json

Apparemment, par défaut, il lie le protocole http à 'localhost: 5000', de sorte qu'il fonctionne avec localhost mais pas avec ip address - ni à distance ni localement.

Si vous essayez d'atteindre un point d'arrêt à la suite d'une demande provenant d'un autre ordinateur, n'oubliez pas de vérifier les paramètres de votre pare-feu (et/ou de votre antivirus).

j'espère que cela t'aides

0
Carlos R Balebona

Certains d'entre vous pourraient passer beaucoup de temps à modifier et à tester à l'aide de votre répertoire% USERPROFILE%. Si vous exécutez sur VS debug , utilisez $ (solutionDir) .vs\config\applicationhost.config

0
carlo818

C'est ce qui a fonctionné pour moi: 

  • Démarrer le gestionnaire IIS
  • Ajouter un nouveau répertoire virtuel qui pointe vers le dossier des projets (C:\VSProjects dans mon cas)
  • Sélectionnez le nouveau répertoire virtuel dans le gestionnaire IIS. Sélectionnez Directory Browsing dans la liste des options. Sur le côté droit, il y a un bouton Enable. Cliquez dessus. 

Maintenant, je peux accéder à mon dossier et à ma corbeille de projets sur le réseau via mypcname\VSProjects\myProj\outputBinViewer

0
SaiyanGirl

Après les configurations ci-dessus, j'ai dû exécuter Visual Studio en mode administratif.

 enter image description here

0
Arun Prasad E S