web-dev-qa-db-fra.com

Configurez IIS Express pour un accès externe au projet VS2010

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

Toutes mes recherches m'ont envoyé à 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 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 le cas. reflété lorsque je lance le site de Visual Studio).

102
snumpy

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

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

Les liaisons 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-tête Host). À des fins de développement, un caractère générique est le plus approprié ici, car vous utiliserez probablement un port unique.

2 Comme vous utilisez une liaison non-locale, des autorisations supplémentaires sont requises. Vous pouvez exécuter VS en tant qu'administrateur, ou de préférence ajouter des ACL d'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 urlacl doit correspondre exactement à la liaison. Ainsi, un urlacl pour http://*:8080 Autorisera une liaison de *:8080:*, Mais pas une liaison de *:8080:localhost Même si ce dernier est un sous-ensemble du précédent. Cela signifie que si, au lieu d'utiliser un caractère générique, vous listez les en-têtes de l'hôte dans applicationhost.config, vous devez ajouter un urlacl correspondant pour chaque.

La procédure de configuration de HTTP.sys pour le trafic externe est similaire à la configuration d’un site utilisant un port réservé. Sous Windows 7 ou Windows Vista, à partir d'une invite de commande avec privilèges élevés, 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 commande avec privilèges:

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

Remarque 2 Si exécuter VS en tant qu'administrateur ou que l'ajout d'entrées dans la liste de contrôle d'accès ne résout pas votre problème, exécutez IIS Express à partir de la ligne de commande et vérifiez s’il ya des messages d’échec d’enregistrement de liaison. Pour démarrer à partir de la ligne de commande, donnez la commande suivante:

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

3 Enfin, vous aurez besoin d'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 aux services uniquement. (Bien que IIS Express n’est pas un service, le multiplexeur HTTP qu’il utilise est).
  • Le protocole est TCP
  • Ports spécifiques: Répertoriez tous les ports de 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 40000-65534 qui couvre l’ensemble de la gamme 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 ordinateur de bureau et ne fonctionnera que sur le domaine local
    • "Domaine + Privé" Si votre machine 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 devez faire des démonstrations sur des réseaux non privés.
  • Le nom devrait être quelque chose comme "IIS Express Dev Server"
134
vikomall

J'ai également passé des heures à résoudre ce problème, essayant de naviguer depuis mon Xoom Android vers ma machine de développement win7, afin de pouvoir tester une nouvelle application Web asp.net que j'avais créée. Tout ce que je faisais, c’est de changer le fichier applicationhost.config d’IISExpress de l’utilisation du nom d’hôte du PC à 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 naviguer sur ma machine dev-Lee et voir mon application depuis mon Xoom!

29
leester39

Nous pouvons ajouter plusieurs adresses de liaison en modifiant applicationhost.config de 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 du LAN en utilisant l’adresse IP.

Accès aux sites locaux depuis Lan en utilisant IIS Express

14
Nasir Mahmood

Visual Studio 2013 SP1 et versions ultérieures (2015) incluent le paramètre "Appliquer les paramètres du serveur à tous les utilisateurs (stocker dans le fichier de projet)". C'est activé par défault. Lorsqu'elle est activée, Visual Studio lance IIS Express avec des arguments de ligne de commande lui faisant utiliser un fichier de configuration différent. L'emplacement du fichier 'applicationhost.config' se trouve sous le répertoire du projet dans '.vs\config '.

6
Jon Eldridge

Nous avons créé une extension VS gratuite (2012, 2013, 2015) appelée Conveyor qui permet cela - vous pouvez la trouver dans le menu Outils-> Extensions ... de VS ou sur le site de la galerie https: // visualstudiogallery. msdn.Microsoft.com/a429dbb7-a982-4541-b401-934375c02c0f?SRC=Home

2
Jim W

Si vous travaillez avec Visual Studio, procédez comme suit pour accéder à l'adresse IP d'IIS-Express via:

  1. Obtenez votre adresse IP hôte: ipconfig dans 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. Peut-être cherchez-vous 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!

1
Daniel Eisenreich

J'ai eu beaucoup de difficulté à 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 IIS Express config ...

"\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 modifié le nom d'hôte en http: // myhost: 80 / , puis appuyé sur le répertoire de création virtuel. bouton. Auparavant, j'avais eu des erreurs disant que le nom d'hôte devait être 'localhost', mais cette fois ce n'était pas le cas. Et après cela, ça a fonctionné.

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

0
stu