Comment activer les requêtes distantes dans IIS Express? Scott Guthrie a écrit que c'était possible mais il n'a pas dit comment.
Comment activer les requêtes distantes dans IIS Express? Scott Guthrie a écrit que c'était possible mais il n'a pas dit comment.
Réponses:
Il y a un billet de blog sur le site de l'équipe IIS expliquant maintenant comment activer les connexions à distance 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 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. Exécutez ensuite la commande suivante à partir d'une invite d'administration:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
commande pour autoriser les connexions sur n'importe quel nom d' hôte?
user={PARAM_USER}
sera dans votre propre langue.
user=todos
plutôt que user=everyone
.
Vous devrez peut-être effectuer trois modifications.
.config
dossier. 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 doubles pour les groupes avec des espaces comme "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
OU port 8080 TCP
Maintenant, lorsque vous commencez, iisexpress.exe
vous devriez voir un message tel que
URL "http: // *: 8080 /" enregistrée pour le site "hello world" application "/"
users=everyone
pour netsh
(deuxième étape) peut provoquer l'erreur 1789. La solution consiste à traduire everyone
le nom de groupe correspondant dans votre langue.
Project Url
, si j'entre un astérisque pour le nom d'hôte, il donne une erreur. Si j'entre autre chose, il essaie de créer un nouveau répertoire virtuel. Il n'est pas lié à l'entrée dans application.config.
bindingInformation="*:8080:hostname"
et à l'étape 2 url=http://hostname:8080/
, et dans les propriétés de votre projet Web Visual Studio sur l'onglet Web, définissez URL du projet sur http://hostname:8080/
. Supprimez l' *
urlacl si vous en avez déjà créé un; cela ne fonctionnera pas si vous avez les deux. Enfin, l'URL à laquelle vous accédez dans votre navigateur Web doit faire référence au nom d'hôte et non à l'hôte local.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Je me souviens 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 express IIS , tout devient assez simple - pas besoin de "netsh http ajouter urlacl url = vaidesg: 8080 / user = tout le monde" ou de gâcher votre "applicationhost.config".
Émettez simplement ceci dans l'invite de commande:
iisexpress-proxy 8080 to 3000
… Puis vous pouvez pointer vos appareils distants vers http: // vaidesg: 3000 .
La plupart du temps, plus simple EST mieux.
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 sur l'adresse IP externe xxxx: 81
Edit: j'utilise actuellement ngrok
En complément à 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:
Sinon, vous obtiendrez une erreur (échec de la création de SDDL, erreur: 1332)
Une bonne ressource est de travailler avec SSL au moment du développement est plus facile avec IISExpress par Scott Hanselman.
Ce que vous recherchez est la section Obtenir IIS Express pour servir en externe sur le port 80
Si vous travaillez avec Visual Studio, suivez ces étapes pour accéder à l'adresse IIS-Express sur IP:
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>
Ajoutez:
<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. Conveyor génère une adresse REMOTE (votre IP) avec un port (45455) qui permet une 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-en 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
Ce qui m'a aidé, c'est de cliquer avec le bouton droit sur l'icône 'IISExpress', 'Afficher toutes les applications'. Ensuite, en sélectionnant le site Web et j'ai vu quel aplicationhost.config il utilise, et la correction s'est parfaitement déroulée.
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é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:
<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 cmd
invite 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 en tant que Administrator
. Cliquez avec le bouton droit sur le fichier de projet de projets Web et sélectionnez Properties
. Accédez à l' Web
onglet 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.
La réponse acceptée à cette question est un guide pour faire fonctionner IIS Express avec la matrice Web. J'ai trouvé ce guide plus utile lorsque j'essayais de le faire fonctionner avec VS 2010.
Je viens de suivre les étapes 3 et 4 (en 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 la redirection de port au lieu d'essayer de modifier votre configuration IIS Express, d'ajouter de nouvelles règles HTTP.sys ou d'exécuter Visual Studio en tant qu'administrateur.
Fondamentalement, vous devez transférer IP:PORT
votre site Web sur un autre port libre de votre ordinateur, mais sur l'adaptateur réseau externe, pas sur localhost.
Le fait est que IIS Express (au moins sur Windows 10) se lie au [::1]:port
sens 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.
La façon la plus simple et la plus cool que j'ai trouvée était d'utiliser (cela prend 2 minutes à configurer):
Cela fonctionnera avec tout ce qui fonctionne sur localhost. Inscrivez-vous, exécutez peu de données et tout ce que vous exécutez sur localhost obtient une URL publique à laquelle vous pouvez accéder de n'importe où.
C'est bon pour montrer des trucs à vos coéquipiers distants, sans jouer avec la configuration IIS ou les pare-feu. Vous voulez arrêter l'accès, il suffit de mettre fin à 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 un plan gratuit
J'ai des problèmes avec IIS Express dans Win 8.1 et une requête externe.
Je procède comme suit pour déboguer la demande externe:
Ça marche!
Si vous exécutez Visual Studio depuis Admin, vous pouvez ajouter simplement
<binding protocol="http" bindingInformation="*:8080:*" />
ou
<binding protocol="https" bindingInformation="*:8443:*" />
dans
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
et aussi, j'ai dû ouvrir le port (8443) de l'application dans le pare-feu Windows.
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. .
<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 votre IIS local directement (ce qui permet ensuite des connexions à distance) mais à son tour, vous devez toujours l'exécuter en tant qu'administrateur ... Je n'aime pas ça.
J'ai résolu ce problème en utilisant l'approche proxy inverse.
J'ai installé le serveur Wamp et utilisé la fonction 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 qu'hôte virtuel pour ce port.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
J'ai fait toutes ces étapes et rien ne m'a aidé. Et ce dont j'ai besoin, c'est juste pour exécuter mon application via IIS Express ...
J'espère que cela aide.
Je n'ai pas pu servir les requêtes iis aux 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/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
Les parties vraiment impressionnantes que je ne pourrais 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 <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 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.
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 à «*»
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 la configuration réseau pour votre port: netsh http add urlacl url = http: // *: 8888 / user = Everyone
[boîte de dialogue 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 déclenché avec une boîte de dialogue: "Bloquer ou ajouter une règle au pare-feu"). Dans ce cas, Add fera 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.