Wie kann ich Remoteanforderungen in IIS Express aktivieren? Scott Guthrie schrieb, dass dies möglich ist, aber er sagte nicht wie.
Wie kann ich Remoteanforderungen in IIS Express aktivieren? Scott Guthrie schrieb, dass dies möglich ist, aber er sagte nicht wie.
Antworten:
Auf der IIS-Teamwebsite befindet sich ein Blogbeitrag, in dem erläutert wird, wie Remoteverbindungen in IIS Express aktiviert werden . Hier ist der relevante Teil dieses Beitrags zusammengefasst:
Führen Sie unter Vista und Win7 den folgenden Befehl an einer Verwaltungsaufforderung aus:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Installieren Sie für XP zuerst die Windows XP Service Pack 2-Supporttools. Führen Sie dann den folgenden Befehl an einer Verwaltungsaufforderung aus:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
Befehl zum Zulassen von Verbindungen auf einem beliebigen Hostnamen?
user={PARAM_USER}
in Ihrer eigenen Sprache angegeben.
user=todos
stattdessen anstelle von user=everyone
.
Möglicherweise müssen Sie drei Änderungen vornehmen.
.config
Datei. Typischerweise:
$(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
Wo everyone
ist eine Windows-Gruppe? Verwenden Sie doppelte Anführungszeichen für Gruppen mit Leerzeichen wie "Tout le monde".
Erlauben Sie IIS Express über 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 beginnen iisexpress.exe
, sollten Sie eine Meldung wie sehen
Erfolgreich registrierte URL "http: // *: 8080 /" für Site "Hallo Welt" -Anwendung "/"
users=everyone
für netsh
(zweiter Schritt) den Fehler 1789 verursachen. Die Lösung besteht darin, everyone
in den entsprechenden Gruppennamen in Ihrer Sprache zu übersetzen.
Project Url
Wenn ich in den Projekteigenschaften, die Sie angeben , ein Sternchen für den Hostnamen eingebe, wird ein Fehler ausgegeben. Wenn ich etwas anderes eingebe, wird versucht, ein neues virtuelles Verzeichnis zu erstellen. Es wird kein Link zum Eintrag in application.config erstellt.
bindingInformation="*:8080:hostname"
und in Schritt 2 den Hostnamen Ihres Computers verwenden url=http://hostname:8080/
und in den Eigenschaften Ihres Visual Studio-Webprojekts auf der Registerkarte Web die Option Projekt-URL festlegen http://hostname:8080/
. Löschen Sie die *
URL, falls Sie bereits eine erstellt haben. es wird nicht funktionieren, wenn Sie beide haben. Schließlich muss die URL, zu der Sie in Ihrem Webbrowser gehen, auf den Hostnamen verweisen, nicht auf localhost.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Ich erinnere mich, dass ich vor einigen Monaten beim Ausprobieren dieses Workflows auf dieselben Probleme gestoßen bin.
Aus diesem Grund habe ich speziell für diese Art von Szenario ein einfaches Proxy-Dienstprogramm geschrieben: https://github.com/icflorescu/iisexpress-proxy .
Mit dem IIS Express-Proxy wird alles ganz einfach - Sie müssen nicht "netsh http add urlacl url = vaidesg: 8080 / user = every" oder Ihre "applicationhost.config" durcheinander bringen.
Geben Sie dies einfach an der Eingabeaufforderung aus:
iisexpress-proxy 8080 to 3000
… Und dann können Sie Ihre Remote-Geräte auf http: // vaidesg: 3000 verweisen .
Meistens ist einfacher besser.
Nichts hat bei mir funktioniert, bis ich iisexpress-proxy gefunden habe .
Öffnen Sie die Eingabeaufforderung als Administrator und führen Sie sie aus
npm install -g iisexpress-proxy
dann
iisexpress-proxy 51123 to 81
Angenommen, Ihr Visual Studio-Projekt wird auf localhost: 51123 geöffnet und Sie möchten auf die externe IP-Adresse xxxx: 81 zugreifen
Bearbeiten: Ich verwende derzeit ngrok
Als Nebenbemerkung dazu:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Dies funktioniert nur unter englischen Windows-Versionen. Wenn Sie eine lokalisierte Version verwenden, müssen Sie "alle" durch etwas anderes ersetzen, zum Beispiel:
Andernfalls wird eine Fehlermeldung angezeigt (SDDL erstellen fehlgeschlagen, Fehler: 1332)
Eine gute Ressource ist die Arbeit mit SSL zur Entwicklungszeit. Mit IISExpress von Scott Hanselman ist es einfacher .
Was Sie suchen, ist der Abschnitt IIS Express für die externe Bereitstellung über Port 80 verwenden
Wenn Sie mit Visual Studio arbeiten, führen Sie die folgenden Schritte aus, um über die IP-Adresse auf IIS-Express 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>
Hinzufügen:
<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) mit einem Port (45455), der externe Anforderungen 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 befinden sich unter folgendem 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 eine andere <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 Admin ausführen
Was mir geholfen hat, war das Klicken mit der rechten Maustaste auf das Symbol "IISExpress", "Alle Anwendungen anzeigen". Dann wählte ich die Website aus und sah, welche aplicationhost.config verwendet wird, und die Korrektur verlief perfekt.
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:
Der erste Schritt besteht darin, Ihre Anwendung an Ihre interne IP-Adresse zu binden. Führen Sie cmd
-> aus ipconfig
, 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 zwei neue Bindungen hinzu bindings
. Sie können auch HTTPS 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 Administrator 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 für Webprojekte und wählen Sie Properties
. Gehen Sie zur Web
Registerkarte und klicken Sie auf Create Virtual Directory
. Wenn Visual Studio nicht als Administrator ausgeführt wird, schlägt dies wahrscheinlich fehl. Jetzt sollte alles funktionieren.
Die akzeptierte Antwort auf diese Frage ist eine Anleitung, wie IIS Express mit Webmatrix funktioniert. Ich fand dieses Handbuch nützlicher, wenn ich versuchte, es mit VS 2010 zum Laufen zu bringen.
Ich habe gerade die Schritte 3 und 4 ausgeführt (IIS Express als Administrator ausführen) und musste meine Firewall vorübergehend deaktivieren, damit sie funktioniert.
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 die Ausführung IP:PORT
Ihrer Website an einen anderen freien Port Ihres Computers weiterleiten, jedoch an den externen Netzwerkadapter, nicht an localhost.
Die Sache ist, dass IIS Express (zumindest unter Windows 10) an die [::1]:port
Bedeutung gebunden ist , dass es den IPv6-Port überwacht. Sie müssen dies berücksichtigen.
Hier ist, wie ich diese Arbeit gemacht habe - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Ich hoffe es hilft.
Die einfachste und coolste Art, die ich gefunden habe, war die Verwendung (die Einrichtung dauert 2 Minuten):
Es funktioniert mit allem, was auf localhost läuft. Melden Sie sich einfach an, führen Sie wenig Excutable aus, und was auch immer Sie auf localhost ausführen, erhält eine öffentliche URL, auf die Sie von überall aus zugreifen können.
Dies ist gut, um Ihren Remote-Teamkollegen Dinge zu zeigen, ohne mit IIS-Setup oder Firewalls herumzuspielen. Möchten Sie den Zugriff beenden, beenden Sie einfach 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 habe einige Probleme mit IIS Express in Win 8.1 und externen Anforderungen.
Ich folge diesen Schritten, um die externe Anfrage zu debuggen:
Es funktioniert!
Wenn Sie Visual Studio über Admin 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
$(SolutionDir).vs\config\applicationHost.config
und musste auch den Port (8443) der Anwendung in der Windows-Firewall öffnen.
Ich hatte einen lokalen IIS aktiviert, also habe ich gerade eine Umschreiberegel für meinen Debugging-Port erstellt ... Ich denke, dies ist besser und cooler als andere Methoden, da es einfacher ist, sie zu entfernen, wenn die Entwicklung abgeschlossen ist ... So sieht das Umschreiben aus. .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
Mit VS können Sie auch direkt mit Ihrem lokalen IIS entwickeln (was dann Remoteverbindungen ermöglicht), aber Sie müssen es wiederum immer als Administrator ausführen ... das gefällt mir nicht.
Ich habe dieses Problem mithilfe des Reverse-Proxy-Ansatzes gelöst.
Ich habe den Wamp-Server installiert und die einfache Reverse-Proxy-Funktion des Apache-Webservers verwendet.
Ich habe einen neuen Port hinzugefügt, um den Apache-Webserver (8081) abzuhören. Dann habe ich die Proxy-Konfiguration als virtueller Host für diesen Port hinzugefügt.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
Ich habe all diese Schritte gemacht und nichts hat mir geholfen. Und was ich brauche, ist nur, um meine App über IIS Express auszuführen ...
Ich hoffe es hilft.
Ich konnte seine Anfragen nicht 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 großartig 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 verschwinden sollte:
> 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 oben genannte Dienstprogramm registriert das SSL-Zertifikat für Sie! Wenn Sie die Option -UseSelfSigned verwenden, ist dies sehr einfach.
Wenn Sie die Dinge auf die harte Tour erledigen möchten, müssen 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.
Ich habe Folgendes getan und konnte eine Verbindung herstellen:
1) Die IIS Express-Konfigurationsbindung vom lokalen Host wurde in '*' geändert.
Bindungsprotokoll = "http" bindingInformation = "*: 8888: *"
2) Definierte eingehende Regel für die Firewall, um den bestimmten 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 = every
[Dialogfeld "Projekteigenschaften"]
Für die Entwicklung mit VisualStudio 2017 und einem NetCore API-Projekt:
1) In Cmd-Box: ipconfig / all, um die IP-Adresse zu bestimmen
2a) Geben Sie die abgerufene IP-Adresse unter Projekteigenschaften-> Registerkarte Debug ein
2b) Wählen Sie einen Port aus und verbinden Sie diesen ab Schritt 2a mit der IP-Adresse.
3) Fügen Sie der Firewall eine Zulassungsregel hinzu, um eingehenden TCP-Verkehr auf dem ausgewählten Port zuzulassen (meine Firewall wird mit einem Dialog ausgelöst: "Blockieren oder Hinzufügen einer Regel zur Firewall"). Add wird in diesem Fall den Trick machen.
Nachteil der obigen Lösung:
1) Wenn Sie eine dynamische IP-Adresse verwenden, müssen Sie die obigen Schritte wiederholen, falls eine andere IP-Adresse zugewiesen wurde.
2) Ihr Server hat jetzt einen offenen Port, den Sie vielleicht vergessen, aber dieser offene Port bleibt eine Einladung für unerwünschte Gäste.