Comment puis-je activer les demandes distantes dans IIS Express? Scott Guthrie a écrit que c'est possible mais il n'a pas dit comment.
Un article de blog sur le site d'équipe IIS explique maintenant 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 Windows XP Service Pack 2. Ensuite, exécutez la commande suivante à partir d'une invite administrative:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
Vous devrez peut-être apporter trois modifications.
.config
. Typiquement:$(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:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
Où everyone
est un groupe Windows. Utilisez des guillemets pour les groupes avec des espaces tels que "Tout le monde".
Autorisez 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
OR 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 "/"
Je me souviens d'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 de proxy simple spécifiquement pour ce type de scénario: https://github.com/icflorescu/iisexpress-proxy .
En utilisant le IIS Express Proxy , tout devient assez simple: inutile de «ajouter http neth urlacl url = vaidesg: 8080/user = everyone» ou de vous ennuyer avec votre «applicationhost.config».
Il suffit d’envoyer cette invite de commande:
iisexpress-proxy 8080 to 3000
… Et vous pouvez ensuite diriger vos périphériques distants vers http: // vaidesg: 3000 .
La plupart du temps, plus simple IS mieux.
Rien n'a fonctionné pour moi jusqu'à ce que j'ai trouvé 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 l'hôte local: 51123 et que vous souhaitez accéder à l'adresse IP externe x.x.x.x: 81
Edit: J'utilise actuellement ngrok
Une bonne ressource est Travailler avec SSL au moment du développement est plus facile avec IISExpress de Scott Hanselman.
Ce que vous recherchez, c’est la section Obtenir que IIS Express serve en externe sur le port 80
En tant que sidenote à 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 quelque chose d'autre, par exemple:
Sinon, vous obtiendrez une erreur (échec de la création de SDDL, erreur: 1332).
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 WindowsAller à
$(SolutionDir)\.vs\config\applicationHost.config
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>
Ajouter: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
avec votre adresse IP
Je l'ai résolu avec l'installation de "Conveyor by Keyoti" dans Visual Studio Professional 2015. Le convoyeur génère une adresse REMOTE (votre IP) avec un port (45455) permettant la requête externe. Exemple:
Conveyor vous permet de tester des applications Web à partir de tablettes et de téléphones externes sur votre réseau ou 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
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
La réponse acceptée à cette question est un guide pour que IIS Express fonctionne avec webmatrix. J'ai trouvé ce guide plus utile pour essayer de le faire fonctionner avec VS 2010.
Je venais de suivre les étapes 3 et 4 (exécuter IIS Express en tant qu'administrateur) et devais désactiver temporairement mon pare-feu pour le faire fonctionner.
Voici ce que j'ai fait pour Windows 10 avec Visual Studio 2015 pour permettre l'accès à 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'à trouver 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 aussi utiliser HTTPS si vous aimez:
<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
Maintenant démarrez Visual Studio en tant que Administrator
. Cliquez avec le bouton droit sur le fichier de projet de projets Web et sélectionnez Properties
. Accédez à 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.
Vous pouvez essayer de configurer le transfert de port au lieu de modifier votre configuration Express IIS, d’ajouter de nouvelles règles HTTP.sys ou d’exécuter Visual Studio en tant qu’administrateur.
Fondamentalement, vous devez transférer le IP:PORT
de votre site Web sur un autre port libre de votre ordinateur, mais sur la carte réseau externe, pas sur l’hôte local.
Le problème est que IIS Express (au moins sous 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 ça aide.
J'ai quelques problèmes à utiliser IIS Express dans Win 8.1 et une requête externe.
Je suis cette étape pour déboguer la demande externe:
Ça marche!
La façon la plus simple et la plus cool que j'ai trouvée était d'utiliser (l'installation prend 2 minutes):
Cela fonctionnera avec tout ce qui tourne sur localhost. Inscrivez-vous simplement, lancez un peu d'argent et tout ce que vous utilisez sur localhost obtient une URL publique à laquelle vous pouvez accéder de n'importe où.
C'est bien pour montrer des choses à vos coéquipiers distants, pas de bidouillage avec la configuration IIS ou les pare-feu. Voulez-vous arrêter l'accès juste terminer l'exécutable.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -Host-header=localhost 89230
en supposant que 89230 est votre port IIS Express
Vous pouvez également exécuter plusieurs ports même sur plan gratuit
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 qu'une autre méthode car il est plus facile de le supprimer une fois que j'ai terminé le développement ... la réécriture ressemble ..
<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 directement à l'aide de votre IIS local (ce qui permet ensuite les connexions distantes), mais vous devez toujours l'exécuter en tant qu'administrateur ... Je n'aime pas cela.
Si vous exécutez Visual Studio à partir de l’administrateur, vous pouvez ajouter uniquement
<binding protocol="http" bindingInformation="*:8080:*" />
ou
<binding protocol="https" bindingInformation="*:8443:*" />
dans
%userprofile%\My Documents\IISExpress\config\applicationhost.config
J'ai résolu ce problème en utilisant une 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>
J'ai fait ce qui suit et j'ai pu me connecter:
1) changé IIS liaison de config express liant l'hôte local à '*'
protocole de liaison = "http" bindingInformation = "*: 8888: *"
2) règle entrante définie sur le pare-feu pour autoriser le port particulier pour le type de protocole: tcp
3) Ajoutez la commande suivante pour ajouter une configuration réseau pour votre port: netsh http add urlacl url = http: // *: 8888/utilisateur = tout le monde
Je ne pouvais pas répondre aux demandes d'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.
C'est incroyablement génial et couvre même HTTPS avec de jolis noms de domaine:
http://www.hanselman.com/blog/WorkingWithSSLeadDevelopmentTimeIsEasierWithIISExpress.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 jamais:
> 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 très simple.
Si vous voulez faire les choses à la dure, 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 l'empreinte numérique que vous pouvez obtenir à partir des propriétés du certificat dans MMC.