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).
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 ...".
40000-65534
qui couvre l’ensemble de la gamme utilisée par Visual Studio, mais sachez que cela est moins sécurisé).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!
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.
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 '.
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
Si vous travaillez avec Visual Studio, procédez comme suit pour accéder à l'adresse IP d'IIS-Express via:
ipconfig
dans la ligne de commande Windows<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>
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
L'indice est que Visual Studio a son propre fichier applicationHost.config!
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.