Comment activer la requête externe dans IIS Express?

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.

398
demandé sur Colonel Panic 2010-07-23 01:23:53

21 réponses

Il y a un article de blog sur le site de l'équipe IIS expliquant comment activer les connexions distantes sur IIS Express . Voici la partie pertinente de ce post résumée:

Sur Vista et Win7, exécutez la commande suivante à partir d'une invite administrative:

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. Exécutez ensuite la commande suivante à partir d'une invite administrative:

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

364
répondu Damian Edwards 2012-06-16 01:33:45

Il y a trois changements que vous pourriez avoir besoin d'apporter.

  1. dites à IIS de se lier à toutes les adresses ip et tous les noms d'hôte. Dans votre fichier .config. Généralement:
    • 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

    <binding protocol="http" bindingInformation="*:8080:*" />
  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 windows. Utilisez des guillemets doubles pour 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 le site "Hello world" application " / "

322
répondu Colonel Panic 2016-04-27 17:10:41

Je me souviens avoir rencontré les mêmes problèmes en essayant ce flux de travail il y a quelques mois.

C'est pourquoi j'ai écrit un utilitaire proxy simple spécifiquement pour ce genre 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 gâcher avec votre " applicationhost.config".

Il suffit D'émettre ceci dans la commande invite:

iisexpress-proxy 8080 to 3000

... et vous pouvez ensuite pointer vos périphériques distants vers http://vaidesg:3000 .

La plupart du temps plus simple est mieux.

108
répondu Ionut-Cristian Florescu 2015-04-30 15:23:59

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 x. x. x. x: 81

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

84
répondu Toolkit 2016-02-17 20:04:29

Une bonne ressource est Travailler avec SSL au moment du développement est plus facile avec IISExpress par Scott Hanselman.

Ce que vous recherchez, c'est la section permettant à IIS Express de servir en externe sur le Port 80

33
répondu Luke Sampson 2011-05-25 04:12:57

Comme une note latérale à 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" lors de l'utilisation d'une version néerlandaise
  • "Jeder" lors de l'utilisation d'une version allemande
  • "Mindenki" lors de l'utilisation d'une version hongroise

Sinon, vous obtiendrez une erreur (Create SDDL failed, Error: 1332)

29
répondu breez 2017-05-29 14:26:44

Je l'ai résolu avec l'installation de "Convoyeur Keyoti" dans Visual Studio Professional 2015. Convoyeur générer une adresse distante (votre IP) avec un port (45455) qui permettent la demande externe. Exemple:

entrez la description de l'image ici

Conveyor vous permet de tester des applications web à partir de tablettes et de téléphones externes sur votre réseau ou à partir d'émulateurs Android (sans http://10.0.2.2:<hostport>)

Les étapes sont dans le lien suivant :

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

15
répondu Ronny Morán 2017-06-19 20:05:59

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

  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 des droits D'administrateur et tout devrait fonctionner
  6. peut-être chercher des problèmes de pare-feu si vous essayez de vous connecter à distance
13
répondu Daniel Eisenreich 2018-08-23 06:09:11

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

Ajoutez un autre <binding /> dans votre configuration IIS Express

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

Enfin, vous devez exécuter Visual Studio en tant Qu'administrateur

9
répondu Bruce 2017-05-23 12:18:23

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é.

Configuration IISExpress

7
répondu Emmanuel 2016-11-18 08:31:53

La réponse acceptée à cette question est un guide pour faire fonctionner IIS Express avec webmatrix. J'ai trouvé ce guide plus utile en essayant de le faire fonctionner avec VS 2010.

Je viens de suivre 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.

5
répondu Chad 2011-05-16 00:19:20

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

La première étape consiste à lier votre application à votre adresse IP interne. Exécuter 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:

<site name="Project.Web" id="2">
    <application path="/">
        <virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:12345:localhost" />
    </bindings>
</site>

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

<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />

Ajoutez la règle suivante à votre pare-feu, ouvrez une nouvelle invite cmd en 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

Démarrez maintenant Visual Studio comme Administrator. Cliquez avec le bouton droit sur le fichier de projet web projects et sélectionnez Properties. Allez dans l'onglet Web et cliquez sur Create Virtual Directory. Si Visual Studio N'est pas exécuté en tant qu'administrateur, cela échouera probablement. Maintenant, tout devrait fonctionner.

entrez la description de l'image ici

4
répondu Ogglas 2016-12-07 11:56:40

Vous pouvez essayer de configurer la redirection de port au lieu d'essayer de modifier votre configuration IIS Express, en ajoutant un nouveau HTTP.règles sys ou exécution de Visual Studio en tant Qu'administrateur.

Fondamentalement, vous devez transférer le IP:PORT sur votre site web vers un autre port libre sur 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 avez besoin de prendre cela en compte.

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

J'espère que ça aide.

4
répondu srmrco 2017-03-07 09:42:13

J'ai quelques problèmes en utilisant IIS Express Dans Win 8.1 et demande externe.

Je suis cette étape pour déboguer la requête externe:

  1. installer IIS
  2. configurez Visual Studio pour utiliser IIS local (propriétés de la Page dans votre projet Web)
  3. créez un AppPool exclusif dans IIS pour travailler avec mon application
  4. dans mon projet, j'utilise le Client Oracle et doit être 32 bits (64 bits ne fonctionnent pas avec Visual Studio) alors j'ai besoin d'autoriser 32 bits dans L'Application Piscine
  5. configurez le pare-feu Windows pour autoriser la requête dans le port 80 (règles entrantes)

Ça marche!

3
répondu Robson Douglas 2014-08-03 19:51:16

Si vous exécutez Visual Studio depuis Admin, Vous pouvez ajouter juste

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

Ou

<binding protocol="https" bindingInformation="*:8443:*" />

Dans

%userprofile%\My Documents\IISExpress\config\applicationhost.config
2
répondu Andrii 2016-12-26 23:34:14

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 frais que l'autre méthode car il est plus facile à enlever une fois que je me suis fait développer... Voici à quoi ressemble la réécriture..

<rewrite>
    <rules>
        <rule name="ReverseProxyInboundRule1" stopProcessing="true">
            <match url="^dev/(.*)" />
            <action type="Rewrite" url="http://localhost:47039/{R:1}" />
        </rule>
    </rules>
</rewrite>

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

2
répondu konzo 2017-02-04 09:30:47

Je n'ai pas pu servir les requêtes iis à 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.

0
répondu Terry Kernan 2015-04-01 10:01:09

C'est incroyablement génial et couvre même 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, donc au cas où le lien ci-dessus disparaîtrait:

> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
>       setupFriendlyHostnameUrl -url:<url>
>       deleteFriendlyHostnameUrl -url:<url>
>       setupUrl -url:<url>
>       deleteUrl -url:<url>
>       setupSslUrl -url:<url> -CertHash:<value>
>       setupSslUrl -url:<url> -UseSelfSigned
>       deleteSslUrl -url:<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 certificat SSL pour vous! Si vous utilisez l'option-UseSelfSigned, c'est super facile.

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

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

Certhash est la "Empreinte" que vous pouvez obtenir à partir des propriétés du certificat dans MMC.

0
répondu eselk 2015-11-03 05:18:34

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

1) Modification de la liaison IIS express config de l'hôte local à '* '

Protocole d'accord="http" bindingInformation="*:8888:*"

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

3) Ajoutez la commande suivante pour ajouter la configuration réseau de votre port: netsh http Ajouter urlacl url = http://*: 8888 / user = tout le monde

0
répondu dhakalan 2016-10-21 20:02:08

J'ai résolu ce problème en utilisant l'approche de 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 du proxy en tant que virtualhost pour ce port.

<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
0
répondu mustafacanturk 2016-11-09 08:24:06

[boîte de dialogue Propriétés du projet]

Pour le développement en utilisant VisualStudio 2017 et 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 attachez-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 s'est déclenché avec une boîte de dialogue: "bloquer ou ajouter une règle à pare"). Ajoutez dans ce cas faire l'affaire.

Inconvénient de la solution ci-dessus:

1) Si vous utilisez une adresse IP dynamique, vous devez refaire les étapes ci-dessus au cas où une autre adresse IP aurait été attribuée.

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

0
répondu Paul Franke 2018-06-20 13:02:24