Wie kann ich Remote-Anforderungen in IIS Express aktivieren? Scott Guthrie schrieb, dass das möglich ist aber er sagte nicht wie.
Auf der Teamwebsite von IIS gibt es einen Blogeintrag, in dem erläutert wird, wie Remoteverbindungen in IIS Express aktivieren . Hier ist der relevante Teil dieses Beitrags zusammengefasst:
Führen Sie unter Vista und Win7 den folgenden Befehl an einer administrativen Eingabeaufforderung aus:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Installieren Sie unter XP zunächst die Windows XP Service Pack 2-Supporttools. Führen Sie dann den folgenden Befehl an einer administrativen Eingabeaufforderung aus:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
Möglicherweise müssen Sie drei Änderungen vornehmen.
.config
-Datei. In der Regel: $(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Suchen Sie das Bindungselement Ihrer Site und fügen Sie es hinzu
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
Wobei everyone
eine Windows-Gruppe ist. Verwenden Sie doppelte Anführungszeichen für Gruppen mit Leerzeichen wie "Tout le monde".
Erlaube IIS Express durch die Windows Firewall.
Start/Windows-Firewall mit erweiterter Sicherheit/Eingehende Regeln/Neue Regel ...
Programm
%ProgramFiles%\IIS Express\iisexpress.exe
ODER Port 8080 TCP
Wenn Sie jetzt iisexpress.exe
starten, sollten Sie eine Meldung wie sehen
Erfolgreich registrierte URL "http: // *: 8080 /" für Site "Hallo Welt" Anwendung "/"
Ich erinnere mich daran, dass ich vor einigen Monaten beim Versuch dieses Workflows auf die gleichen Probleme gestoßen bin.
Deshalb habe ich ein einfaches Proxy-Dienstprogramm speziell für diese Art von Szenario geschrieben: https://github.com/icflorescu/iisexpress-proxy .
Mit dem Express-Proxy IIS wird alles ganz einfach - Sie müssen nicht "netsh http add urlacl url = vaidesg: 8080/user = Everyone" hinzufügen oder sich mit Ihrer "applicationhost.config" herumschlagen.
Geben Sie einfach folgende Eingabeaufforderung aus:
iisexpress-proxy 8080 to 3000
… Und dann können Sie Ihre Remote-Geräte auf http: // vaidesg: 3000 zeigen.
Meistens einfacher IS besser.
Nichts hat für mich funktioniert, bis ich iisexpress-proxy gefunden habe.
Öffnen Sie die Eingabeaufforderung als Administrator, und führen Sie dann den Befehl aus
npm install -g iisexpress-proxy
dann
iisexpress-proxy 51123 to 81
vorausgesetzt, Ihr Visual Studio-Projekt wird auf localhost: 51123 geöffnet und Sie möchten auf die externe IP-Adresse x.x.x.x: 81 zugreifen
Edit: Ich verwende derzeit ngrok
Eine gute Ressource ist Mit IISExpress ist das Arbeiten mit SSL zur Entwicklungszeit einfacher von Scott Hanselman.
Was Sie suchen, ist der Abschnitt Getting IIS Express zur externen Bedienung über Port 80.
Als Nebenbemerkung dazu:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Dies funktioniert nur bei englischen Windows-Versionen. Wenn Sie eine lokalisierte Version verwenden, müssen Sie "Jeder" durch etwas anderes ersetzen, zum Beispiel:
Andernfalls erhalten Sie eine Fehlermeldung (SDDL fehlgeschlagen, Fehler: 1332).
Wenn Sie mit Visual Studio arbeiten, führen Sie die folgenden Schritte aus, um auf die IIS-Express über IP-Adresse zuzugreifen:
ipconfig
in der Windows-BefehlszeileGehe zu
$(SolutionDir)\.vs\config\applicationHost.config
Finden
<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>
Add: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
mit Ihrer IP-Adresse
Ich habe es mit der Installation von "Conveyor by Keyoti" in Visual Studio Professional 2015 gelöst. Conveyor generiert eine REMOTE-Adresse (Ihre IP-Adresse) mit einem Port (45455), der eine externe Anforderung ermöglicht. Beispiel:
Mit Conveyor können Sie Webanwendungen von externen Tablets und Telefonen in Ihrem Netzwerk oder von Android-Emulatoren (ohne http://10.0.2.2:<hostport>
) testen.
Die Schritte sind in dem folgenden Link:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Wenn Sie die Antwort von Colonel Panic ausprobiert haben aber in Visual Studio nicht funktionieren, versuchen Sie Folgendes:
Fügen Sie einen weiteren <binding />
in Ihrer IIS Express-Konfiguration hinzu
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Schließlich müssen Sie Visual Studio als Administrator ausführen
Die akzeptierte Antwort auf diese Frage ist ein Leitfaden für die Verwendung von IIS Express für die Arbeit mit webmatrix. Ich fand diesen Leitfaden nützlicher, wenn ich versuche, es mit VS 2010 zu verbinden.
Ich habe gerade die Schritte 3 und 4 (mit IIS Express als Administrator) ausgeführt und musste meine Firewall vorübergehend deaktivieren, damit sie funktioniert.
Dies habe ich für Windows 10 mit Visual Studio 2015 getan, um den Remotezugriff sowohl mit http als auch mit https zu ermöglichen:
Zunächst müssen Sie Ihre Anwendung an Ihre interne IP-Adresse binden. Führen Sie cmd
-> ipconfig
aus, um die Adresse abzurufen. Öffnen Sie die Datei /{project folder}/.vs/config/applicationhost.config
und scrollen Sie nach unten, bis Sie Folgendes finden:
<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>
Fügen Sie unter bindings
zwei neue Bindungen hinzu. Sie können HTTPS auch verwenden, wenn Sie möchten:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
Fügen Sie Ihrer Firewall die folgende Regel hinzu, öffnen Sie eine neue cmd
-Eingabeaufforderung als admin und führen Sie die folgenden Befehle aus:
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
Starten Sie nun Visual Studio als Administrator
. Klicken Sie mit der rechten Maustaste auf die Projektdatei des Webprojekts und wählen Sie Properties
aus. Gehen Sie zur Registerkarte Web
und klicken Sie auf Create Virtual Directory
. Wenn Visual Studio nicht als Administrator ausgeführt wird, schlägt dies möglicherweise fehl. Jetzt sollte alles funktionieren.
Sie können versuchen, die Portweiterleitung einzurichten, anstatt zu versuchen, Ihre IIS Express-Konfiguration zu ändern, neue HTTP.sys-Regeln hinzuzufügen oder Visual Studio als Administrator auszuführen.
Grundsätzlich müssen Sie den IP:PORT
weiterleiten, über den Ihre Website an einen anderen freien Port Ihres Computers, jedoch nicht über den lokalen Netzwerkadapter, sondern über den externen Netzwerkadapter läuft.
Die Sache ist, dass IIS Express (zumindest unter Windows 10) an [::1]:port
bindet, was bedeutet, dass es am IPv6-Port lauscht. Sie müssen dies berücksichtigen.
So habe ich diese Arbeit gemacht - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Ich hoffe es hilft.
Ich habe Probleme mit der Verwendung von IIS Express in Win 8.1 und einer externen Anforderung.
Ich folge diesen Schritten, um die externe Anfrage zu debuggen:
Es funktioniert!
Die einfachste und coolste Methode, die ich gefunden habe, war die Verwendung (die Einrichtung dauert 2 Minuten):
Es funktioniert mit allem, was auf localhost läuft. Einfach anmelden, wenig ausführbare Dateien ausführen und was immer Sie auf localhost ausführen, erhält eine öffentliche URL, auf die Sie von überall aus zugreifen können.
Dies ist gut, wenn Sie Ihren Teamkollegen etwas zeigen möchten, kein Fummeln mit IIS = Setup oder Firewall. Möchten Sie den Zugriff beenden, beenden Sie die ausführbare Datei.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -Host-header=localhost 89230
angenommen, 89230 ist Ihr IIS Express-Port
Sie können auch mehrere Ports ausführen, auch wenn Sie einen kostenlosen Plan haben
Ich hatte ein lokales IIS aktiviert, also habe ich gerade eine Umschreibungsregel für meinen Debugging-Port erstellt ... Ich denke, das ist besser und cooler als andere Methoden, da es einfacher ist, es zu entfernen, sobald ich mit der Entwicklung fertig bin ... die umschreiben sieht ..
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
VS ermöglicht es Ihnen auch, direkt mit Ihrem lokalen IIS zu entwickeln (was dann Remoteverbindungen zulässt), aber Sie müssen es immer als Administrator ausführen ... Das gefällt mir nicht.
Wenn Sie Visual Studio von Admin aus ausführen, können Sie nur hinzufügen
<binding protocol="http" bindingInformation="*:8080:*" />
oder
<binding protocol="https" bindingInformation="*:8443:*" />
in
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Ich habe dieses Problem mit dem Reverse-Proxy-Ansatz gelöst.
Ich habe den Wamp-Server installiert und die einfache Reverse-Proxy-Funktion des Apache-Webservers verwendet.
Ich habe einen neuen Port zum Abhören des Apache-Webservers (8081) hinzugefügt. Dann habe ich eine Proxy-Konfiguration als virtuellen Host für diesen Port hinzugefügt.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
Ich habe folgendes gemacht und konnte mich verbinden:
1) Express-Konfigurationsbindung IIS wurde vom lokalen Host in '*' geändert.
bindungsprotokoll = "http" bindingInformation = "*: 8888: *"
2) Definierte eingehende Regel für die Firewall, um den jeweiligen Port für den Protokolltyp zuzulassen: tcp
3) Fügen Sie den folgenden Befehl hinzu, um die Netzwerkkonfiguration für Ihren Port hinzuzufügen: netsh http add urlacl url = http: // *: 8888/user = everyone
Ich konnte keine Anfragen an andere Benutzer in meinem lokalen Netzwerk senden. Alles, was ich (zusätzlich zu den oben genannten) tun musste, war, meinen BT-Hub-Router neu zu starten.
Das ist wahnsinnig fantastisch und deckt sogar HTTPS mit hübschen Domainnamen ab:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
Die wirklich großartigen Teile, die ich auf SO nirgendwo anders finden konnte, falls der obige Link jemals verschwindet:
> 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/
Das obige Dienstprogramm registriert das SSL-Zertifikat für Sie! Wenn Sie die Option -UseSelfSigned verwenden, ist das ganz einfach.
Wenn Sie Dinge auf die harte Tour machen wollen, ist es nicht selbstverständlich, dass Sie HTTP.SYS mitteilen, welches Zertifikat verwendet werden soll.
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash ist der "Fingerabdruck", den Sie aus den Zertifikateigenschaften in MMC erhalten können.