Configurer IIS Express pour l'accès externe au projet VS2010


103

Je développe un projet dans VS2010 et je peux visualiser mon site localement via IIS Express. Je souhaite activer l'accès externe sur le réseau.

Toutes mes recherches m'ont renvoyé à cette entrée de blog: http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx , ce qui est utile mais le fait ne semble pas montrer comment configurer les liaisons pour un projet démarré dans Visual Studio (je ne trouve pas l'écran dans les captures d'écran et j'ai modifié les informations de liaison dans applicationhost.config, mais cela ne semble pas être reflété lorsque je lance le site à partir de Visual Studio).


10
s'il vous plaît lire l' article du blog Scott Hanselman hanselman.com/blog/…
balexandre

Réponses:


136

1 Après avoir modifié le fichier applicationhost.config (situé dans le dossier IISExpress de vos documents), les liaisons de votre site doivent ressembler à celles-ci:

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

Les reliures se composent de trois parties. Tout d'abord une adresse IP ou une liste, ou comme dans ce cas, un caractère générique. Deuxièmement, le numéro de port, et troisièmement un nom d'hôte, une liste ou un caractère générique (pour le filtrage par en- Hosttête). À des fins de développement, un caractère générique est le plus approprié ici car vous utiliserez probablement un port unique.

2 Étant donné que vous utilisez une liaison non-localhost, des autorisations supplémentaires sont requises. Vous pouvez exécuter VS en tant qu'administrateur, ou de préférence, vous devez ajouter des listes de contrôle d' accès URL pour accorder les autorisations requises. Dans l'exemple ci-dessous, l'autorisation est donnée à tout le monde, mais vous pouvez utiliser votre propre nom d'utilisateur.

Remarque: le urlacldoit correspondre exactement à la liaison. Ainsi, un urlaclfor http://*:8080permettra une liaison de *:8080:*, mais pas une liaison de *:8080:localhostmême si ce dernier est un sous-ensemble du premier. cela signifie que si, au lieu d'utiliser un caractère générique, vous répertoriez les en-têtes d'hôte applicationhost.config, vous devez ajouter une correspondance urlaclpour chacun.

Les étapes de configuration de HTTP.sys pour le trafic externe sont similaires à la configuration d'un site pour utiliser un port réservé. Sous Windows 7 ou Windows Vista, à partir d'une invite de commandes avec élévation de privilèges, exécutez la commande suivante:

netsh http add urlacl url=http://*:8080/ user=DOMAIN\username

Sous Windows XP, exécutez la commande suivante à partir d'une invite de commandes avec élévation de privilèges:

httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)

Remarque 2 Si l'exécution de VS en tant qu'administrateur ou l'ajout d'entrées ACL ne résout pas votre problème, exécutez IIS Express à partir de la ligne de commande et vérifiez s'il existe des messages d'échec d'enregistrement de liaison. Pour commencer à partir de la ligne de commande, donnez cette commande:

iisexpress.exe /site:"your-site-name"

3 Enfin, vous aurez besoin des entrées de pare-feu appropriées. Pour cela, il est plus simple d'utiliser la console "Pare-feu Windows avec sécurité avancée".

Sous "Règles entrantes", choisissez "Nouvelle règle ...".

  • Le type de règle est "Personnalisé".
  • Le programme est Services-> Personnaliser ...-> Appliquer uniquement aux services. (Bien que IIS Express ne soit pas un service, le multiplexeur HTTP qu'il utilise l'est).
  • Le protocole est TCP
  • Ports spécifiques: répertoriez tous les ports pour toutes vos liaisons IIS Express. Vous pouvez revenir à cette règle et ajouter des ports à tout moment. (Si cela devient fastidieux, vous pouvez ajouter une plage telle que celle 40000-65534qui couvre toute la plage utilisée par Visual Studio, mais sachez que cela est moins sécurisé).
  • L'action est "Autoriser la connexion"
  • Le profil sera l'un des suivants. En cas de doute, choisissez "Domaine + privé".
    • "Domaine", si le vôtre est un bureau d'entreprise et ne fonctionnera que sur le domaine local
    • "Domaine + Privé" Si le vôtre est une machine de développement privée dans un environnement non professionnel, ou un ordinateur portable d'entreprise qui doit également fonctionner lorsque vous travaillez à domicile.
    • "Domaine, privé et public", si vous avez besoin de faire des démonstrations sur des réseaux non privés.
  • Le nom doit être quelque chose comme "IIS Express Dev Server"

12
@ user578913 J'ai donc finalement trouvé le bon fichier applicationhost.config en ouvrant la barre des tâches IIS Express en cours d'exécution et en cliquant dessus puis sur le lien vers le fichier de configuration. J'ai défini le port sur 1063 sur la deuxième ligne, car c'est ce sur quoi la première ligne avait été définie. Ran votre ligne de commande, et tout avait l'air bien. Quand je vais au nom de la machine ou au nom de la machine: 1063 à partir d'une autre machine sur le réseau, je n'obtiens toujours rien.
snumpy

15
ok, puisque Visual Studio attribue un port (autre que 8080), le pare-feu Windows le bloquait. Après avoir éteint le pare-feu Windows (je pourrais sans doute simplement ouvrir le port, mais je suis sur un réseau sécurisé) et avoir utilisé l'adresse IP de ma machine plutôt que le nom de la machine, cela a fonctionné. Merci. Je voterais, mais je n'ai pas encore le représentant = (
snumpy

3
Oui, si le pare-feu Windows doit être activé, vous ajoutez explicitement le port TCP 8080 (ou ce que vous utilisez). Dans Windows 7, j'ai d'abord essayé d'attribuer le port à "IIS Express Worker Process". Mais cela n'a pas fonctionné. J'ai dû utiliser l'option "Nouvelle règle" et autoriser le port 8080. Le choix du profil (domaine, privé, public) est également important.
Gautam Jain

2
Remarque pour vous-même: si vous obtenez l'accès refusé, exécutez Visual Studio en tant qu'administrateur .
nVentimiglia

3
À partir de VS2015, l'emplacement du fichier est C:\<Path\To\Solution>\.vs\config\applicationhost.config. (Merci, @Talon)
snumpy

29

J'ai également passé des heures sur ce problème, à essayer de naviguer de mon Android Xoom vers ma machine de développement win7, afin de pouvoir tester une nouvelle application Web asp.net que j'ai créée. Tout ce que j'ai fait a été de changer le fichier applicationhost.config d'IISExpress en utilisant le nom d'hôte du PC en l'adresse IP actuelle du PC, pour mon nouveau site.

<binding protocol="http" bindingInformation="*:80:dev-Lee" />

à

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 

Une fois que j'ai fait cela et redémarré IISExpress ... j'ai pu accéder à ma machine dev-Lee et voir mon application depuis mon Xoom!


10
Tout ce que j'obtiens avec toutes ces solutions est une erreur 400 - Mauvaise demande. Aucune suggestion?
Krumelur

2
@Krumelur, assurez-vous de modifier le fichier applicationhost.config correct. celui du dossier Mes documents.
Codler le

14

Nous pouvons ajouter plusieurs adresses de liaison en éditant applicationhost.config d'IIS Express

<bindings>
   <binding protocol="http" bindingInformation="*:62217:localhost" />
   <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
   <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>

Maintenant, nous pouvons accéder au site Web à partir du réseau local en utilisant l'adresse IP.

Accès aux sites locaux à partir du réseau local à l'aide d'IIS Express


6

Visual Studio 2013 SP1 et supérieur (2015) inclut le paramètre «Appliquer les paramètres du serveur à tous les utilisateurs (stocker dans le fichier projet)». C'est activé par défault. Lorsqu'il est activé, Visual Studio lance IIS Express avec des arguments de ligne de commande qui lui permettent d'utiliser un fichier de configuration différent. L'emplacement du fichier 'applicationhost.config' se trouve sous le répertoire du projet dans '.vs \ config'.


1
Oui, c'était le problème dans mon cas - j'ai essayé de modifier un fichier incorrect. En l'occurrence, vous pouvez voir où se trouve la configuration de votre application IIS Express en cliquant sur l'icône de la barre d'état, en répertoriant toutes les applications et en sélectionnant votre. Le chemin d'accès au fichier de configuration sera écrit ci-dessous. J'étais en .vs \ config
evilkos

1
Ouais, pareil pour moi. Merci beaucoup.
Vas


1

Si vous travaillez avec Visual Studio, suivez ces étapes pour accéder à IIS-Express via l'adresse IP:

  1. Obtenez l'adresse IP de votre hôte: ipconfigdans la ligne de commande Windows
  2. GoTo $ (SolutionDir) .vs \ config \ applicationHost.config
  3. Trouver
    <site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
  4. Ajouter: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    avec votre adresse IP
  5. Exécutez votre Visual Studio avec les droits d'administrateur et tout devrait fonctionner
  6. Recherchez peut-être des problèmes de pare-feu si vous essayez de vous connecter à distance

L'indice est que Visual Studio a son propre fichier applicationHost.config!


0

J'ai eu beaucoup de mal à faire fonctionner cela à partir de Visual Studio 2012, je suis passé de 404 erreurs à 503 erreurs. Finalement, ce qui a fonctionné pour moi, a été d'effacer toute la configuration associée dans la configuration IIS Express ...

"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy

Ensuite, j'ai créé un nouveau répertoire virtuel à partir de la page de propriétés de mon projet Web dans VS, mais avant de créer le répertoire virtuel, j'ai changé le nom d'hôte en http: // myhost: 80 / puis appuyez sur le bouton Créer un répertoire virtuel. Auparavant, j'avais reçu des erreurs disant que le nom d'hôte devait être «localhost» mais cette fois ce n'était pas le cas. Et après ça, ça a marché.

En bref, effacez d'abord la configuration existante et recommencez.


-2

Si votre domaine externe est "name.mydyndns.com", vous devez écrire:

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

Cela fonctionne sur Windows 2003 Server et IIS 7.5 Express.


-3

Capture d'écran

dans le pool d'applications sur IIS, définissez «Activer les applications 32 bits» sur «vrai».


Je ne suis pas sûr que cela répond réellement à la question. Vouliez-vous publier ceci sur une autre question?
ckittel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.