IIS Express active la requête externe

Comment puis-je activer les requêtes distantes dans IIS Express? Scott Guthrie a écrit que c’est possible mais il n’a pas dit comment.

Une publication de blog sur le site de l’équipe IIS explique comment activer les connexions à distance sur IIS Express . Voici la partie pertinente de ce post résumée:

Sous Vista et Win7, exécutez la commande suivante à partir d’une invite d’administration:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

Pour XP, installez d’abord les outils de support de Windows XP Service Pack 2. Ensuite, exécutez la commande suivante à partir d’une invite d’administration:

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

Il y a trois changements à apporter.

  1. Dites à IIS Express de se connecter à toutes les adresses IP et à tous les noms d’hôte. Dans votre fichier .config . Typiquement:
    • VS 2015: $(solutionDir)\.vs\config\applicationhost.config
    • %userprofile%\My Documents\IISExpress\config\applicationhost.config

Trouvez l’élément de liaison de votre site et ajoutez

   
  1. Configurez le bit de Windows appelé «http.sys». En tant qu’administrateur, exécutez la commande:
  netsh http add urlacl url=http://*:8080/ user=everyone 

everyone est un groupe de fenêtres. Utilisez des guillemets doubles pour les groupes avec des espaces comme “Tout le monde”.

  1. Autoriser IIS Express via le pare-feu Windows.

    Démarrer / Pare-feu Windows avec sécurité avancée / Règles entrantes / Nouvelle règle …

    Programme %ProgramFiles%\IIS Express\iisexpress.exe
    OU Port 8080 TCP

Maintenant, lorsque vous démarrez iisexpress.exe vous devriez voir un message tel que

URL enregistrée avec succès “http: // *: 8080 /” pour l’application “hello world” du site “/”

Je me souviens d’avoir rencontré les mêmes problèmes en essayant ce workflow il y a quelques mois.

C’est pourquoi j’ai écrit un utilitaire de proxy simple spécifiquement pour ce type de scénario: https://github.com/icflorescu/iisexpress-proxy .

En utilisant le proxy IIS Express , tout devient assez simple – pas besoin de “netsh http add urlacl url = vaidesg: 8080 / user = everyone” ou de faire une erreur avec votre “applicationhost.config”.

Il suffit de lancer cette invite de commande:

iisexpress-proxy 8080 to 3000

… Et vous pouvez ensuite diriger vos périphériques distants sur http: // vaidesg: 3000 .

La plupart du temps, c’est plus simple.

Rien n’a fonctionné pour moi jusqu’à ce que je trouve iisexpress-proxy .

Ouvrez l’invite de commande en tant qu’administrateur, puis exécutez

 npm install -g iisexpress-proxy 

puis

 iisexpress-proxy 51123 to 81 

en supposant que votre projet Visual Studio s’ouvre sur localhost: 51123 et que vous souhaitez accéder à l’adresse IP externe xxxx: 81

Edit: juste pour mentionner que cela fonctionne très bien avec noip.com

Travailler avec SSL au moment du développement est plus facile avec IISExpress de Scott Hanselman.

Vous recherchez ensuite la section Externalisation de IIS Express sur le port 80

En sidote à ceci:

 netsh http add urlacl url=http://vaidesg:8080/ user=everyone 

Cela ne fonctionnera que sur les versions anglaises de Windows. Si vous utilisez une version localisée, vous devez remplacer “Tout le monde” par autre chose, par exemple:

  • “Iedereen” en utilisant une version néerlandaise
  • “Jeder” en utilisant une version allemande
  • “Mindenki” en utilisant une version hongroise

Sinon, vous obtiendrez une erreur (Echec de la création de SDDL, erreur: 1332)

Je l’ai résolu avec l’installation de “Conveyor by Keyoti” dans Visual Studio Professional 2015. Conveyor génère une adresse REMOTE (votre IP) avec un port (45455) qui active la requête externe. Exemple:

entrer la description de l'image ici

Conveyor vous permet de tester des applications Web depuis des tablettes et des téléphones externes sur votre réseau ou depuis des émulateurs Android (sans http://10.0.2.2: )

Les étapes sont dans le lien suivant:

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

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

  1. Obtenez votre adresse IP hôte: ipconfig dans la ligne de commande Windows
  2. Aller à

     $(SolutionDir)\.vs\config\applicationHost.config 
  3. Trouver

             
  4. Ajouter:
    avec votre adresse IP

  5. Exécutez votre Visual Studio avec des droits d’administrateur et tout devrait fonctionner
  6. Peut-être que vous cherchez des problèmes de pare-feu si vous essayez de vous connecter à distance

Si vous avez essayé la réponse du colonel Panic mais ne fonctionne pas dans Visual Studio, essayez ceci:

Ajoutez un autre dans votre configuration IIS Express

     

Enfin, vous devez exécuter Visual Studio en tant qu’administrateur

Ce qui m’a aidé, c’était un clic droit sur l’icône «IISExpress», «Afficher toutes les applications». Puis en sélectionnant le site Web et j’ai vu quel aplicationhost.config il utilise, et la correction s’est parfaitement déroulée.

Configuration IISExpress

La réponse acceptée à cette question est un guide pour que IIS Express fonctionne avec WebMasortingx. J’ai trouvé ce guide plus utile pour essayer de le faire fonctionner avec VS 2010.

J’ai simplement suivi les étapes 3 et 4 (exécutant IIS Express en tant qu’administrateur) et j’ai dû désactiver temporairement mon pare-feu pour le faire fonctionner.

Vous pouvez essayer de configurer le transfert de port au lieu d’essayer de modifier votre configuration IIS Express, d’append de nouvelles règles HTTP.sys ou d’exécuter Visual Studio en tant qu’administrateur.

Fondamentalement, vous devez transférer l’ IP:PORT votre site Web s’exécute sur un autre port libre de votre machine, mais sur la carte réseau externe, pas localhost.

La chose est que IIS Express (au moins sur Windows 10) se lie à [::1]:port ce qui signifie qu’il écoute sur le port IPv6. Vous devez en tenir compte.

Voici comment j’ai fait ce travail – http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html

J’espère que cela aide.

J’ai des problèmes avec IIS Express sous Windows 8.1 et une demande externe.

Je suis ces étapes pour déboguer la demande externe:

  1. Installez IIS
  2. Configurer Visual Studio pour utiliser IIS local (propriétés de la page dans votre projet Web)
  3. Créer un AppPool exclusif dans IIS pour travailler avec mon application
  4. Dans mon projet, j’utilise Oracle Client et je dois avoir 32 bits (64 bits ne fonctionnent pas avec Visual Studio), alors je dois autoriser 32 bits dans le pool d’applications
  5. Configurez le pare-feu Windows pour autoriser la demande dans le port 80 (règles entrantes)

Ça marche!

C’est ce que j’ai fait pour Windows 10 avec Visual Studio 2015 pour activer l’access à distance, à la fois avec http et https:

La première étape consiste à lier votre application à votre adresse IP interne. Exécutez cmd -> ipconfig pour obtenir l’adresse. Ouvrez le fichier /{project folder}/.vs/config/applicationhost.config et faites défiler jusqu’à ce que vous trouviez quelque chose comme ceci:

         

Ajoutez deux nouvelles liaisons sous des bindings . Vous pouvez également utiliser HTTPS si vous aimez:

   

Ajoutez la règle suivante à votre pare-feu, ouvrez une nouvelle invite cmd tant qu’administrateur et exécutez les commandes suivantes:

 netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow 

Maintenant, démarrez Visual Studio en tant Administrator . Cliquez avec le bouton droit sur le fichier de projet de projets Web et sélectionnez Properties . Accédez à l’onglet Web , puis cliquez sur Create Virtual Directory . Si Visual Studio n’est pas exécuté en tant qu’administrateur, cela échouera probablement. Maintenant, tout devrait fonctionner.

entrer la description de l'image ici

Si vous exécutez Visual Studio depuis Admin, vous pouvez append simplement

ou

dans

 %userprofile%\My Documents\IISExpress\config\applicationhost.config 

J’avais un IIS local activé donc je viens de créer une règle de réécriture sur mon port de débogage … Je pense que c’est mieux et plus cool que les autres méthodes car il est plus facile à supprimer une fois le développement terminé … Voici à quoi ressemble la réécriture. .

         

VS vous permet également de développer directement en utilisant votre IIS local (ce qui permet alors des connexions à distance) mais à son tour, vous devez toujours l’exécuter en tant qu’administrateur … Je n’aime pas ça.

Je n’ai pas été en mesure de répondre à de telles demandes à d’autres utilisateurs de mon réseau local. Tout ce que j’avais à faire (en plus de ce qui précède) était de redémarrer mon routeur BT Hub.

C’est incroyablement génial et couvre même le HTTPS avec de jolis noms de domaine:

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

Les parties vraiment géniales que je n’ai pu trouver nulle part ailleurs sur SO au cas où le lien ci-dessus disparaîtrait:

 > C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage: > iisexpressadmincmd.exe   Supported commands: > setupFriendlyHostnameUrl -url: > deleteFriendlyHostnameUrl -url: > setupUrl -url: > deleteUrl -url: > setupSslUrl -url: -CertHash: > setupSslUrl -url: -UseSelfSigned > deleteSslUrl -url: > > Examples: 1) Configure "http.sys" and "hosts" file for friendly > hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl > -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd > deleteFriendlyHostnameUrl -url:http://contoso:80/ 

L’utilitaire ci-dessus enregistrera le certificate SSL pour vous! Si vous utilisez l’option -UseSelfSigned, c’est super facile.

Si vous voulez faire les choses à la dure, la partie non évidente est que vous devez indiquer à HTTP.SYS quel certificate utiliser, comme ceci:

 netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE 

Certhash est le “Thumbprint” que vous pouvez obtenir à partir des propriétés du certificate dans MMC.

J’ai fait ce qui suit et j’ai pu me connecter:

1) modification de la liaison de configuration express IIS de l’hôte local vers ‘*’

protocole de liaison = “http” bindingInformation = “*: 8888: *”

2) Règle entrante définie sur le pare-feu pour autoriser le port particulier du type de protocole: tcp

3) Ajoutez la commande suivante pour append une configuration réseau à votre port: netsh http add urlacl url = http: // *: 8888 / user = everyone

J’ai résolu ce problème en utilisant une approche proxy inverse.

J’ai installé le serveur Wamp et utilisé la fonctionnalité de proxy inverse simple du serveur Web Apache.

J’ai ajouté un nouveau port pour écouter le serveur Web Apache (8081). Ensuite, j’ai ajouté la configuration de proxy en tant que virtualhost pour ce port.

  ProxyPass / http://localhost:46935/ ProxyPassReverse / http://localhost:46935/  

[boîte de dialog des propriétés du projet]

Pour le développement à l’aide de VisualStudio 2017 et d’un projet API NetCore:

1) Dans Cmd-Box: ipconfig / all pour déterminer l’adresse IP

2a) Entrez l’adresse IP récupérée dans Propriétés du projet -> Onglet Débogage

2b) Sélectionnez un port et connectez-le à l’adresse IP de l’étape 2a.

3) Ajoutez une règle d’autorisation dans le pare-feu pour autoriser le trafic TCP entrant sur le port sélectionné (mon pare-feu est déclenché par une boîte de dialog: “Bloquer ou append une règle au pare-feu”). Ajouter sera dans ce cas faire l’affaire.

Inconvénient de la solution ci-dessus:

1) Si vous utilisez une adresse IP dynamic, vous devez recommencer les étapes ci-dessus au cas où une autre adresse IP a été atsortingbuée.

2) Votre serveur a maintenant un port ouvert que vous pourriez oublier, mais ce port ouvert rest une invitation pour les invités indésirables.