Ich versuche, eine Website, die ich in einer lokalen IISExpress-Instanz ausgeführt habe, mit einigen anderen Computern / Geräten in meinem lokalen Netzwerk zu testen. Ich verwende Win7 Pro.
Wenn ich zum ersten Mal versuche, von einem anderen Computer in meinem lokalen Netzwerksegment zu meinem Computer zu navigieren, wird die Fehlermeldung 400 angezeigt: Hostname ist ungültig.
Ich verstehe, dass ich Remotezugriff auf die ACL mit einem Befehl an der Eingabeaufforderung mit erhöhten Rechten gewähren muss, wie:
netsh http add urlacl url=http://mymachinename:50333/ user=everyone
Jetzt bekomme ich einen 503 Service ist nicht verfügbar Fehler.
Die Windows-Firewall ist derzeit ausgeschaltet und ich kann meine lokale IISExpress-Instanz mit der Adresse durchsuchen http://localhost:50333
Was ist das letzte Stück dieses Konfigurationspuzzles?
quelle
http://mymachinename:50333/
von Ihrem Computer aus zu navigieren ?Antworten:
Anscheinend fehlt Ihnen ein verbindlicher Informationseintrag in der Datei applicationhost.config.
Öffnen Sie Ihre Datei applicationhost.config. Mögliche Standorte sind:
%userprofile%\Documents\IISExpress\config\applicationhost.config
$(solutionDir)\.vs\config\applicationhost.config
(VS2015)iisexpress.exe
, um sicherzugehen.Suchen Sie Ihren WebSite-Eintrag und fügen Sie die folgende Bindung mit Ihrem Computernamen hinzu.
Starten Sie IIS Express neu
quelle
iisexpress.exe
sorgfältig durch, um festzustellen, welche Konfigurationsdatei verwendet wird.Es gab nur eine Sache, die für mich funktioniert hat.
Verwenden
*:portnumber:*
war nicht gut. Ja, nachdem ich das getan und sichergestellt habe, dass die Windows-Firewall geöffnet ist, konnte ich eine Verbindung zum Port herstellen, aber es wurde immer noch der Fehler "503" angezeigt.Ich habe einige Dinge lokal getestet und festgestellt, dass nur http: // localhost funktioniert. Bei Verwendung der realen IP-Adresse (nicht 127.0.0.1, sondern beispielsweise 192.168.1.50) wurde auch auf dem lokalen Computer eine 503 zurückgegeben. Ich habe versucht, den echten Hostnamen in den Bindungen zu verwenden, aber IIS Express hat den Start verweigert. Dies hat möglicherweise etwas damit zu tun, wie der Hostname aufgelöst wurde. Das habe ich nicht weiter untersucht.
Schließlich habe ich diese Konfiguration verwendet:
Auf diese Weise konnte ich eine Verbindung von einem Remote-Computer mit herstellen
http://192.168.1.50:53351
.quelle
<binding protocol="https" bindingInformation="*:44300:*" />
<binding protocol="http" bindingInformation="*:8888:*" />
edit: Ich habe wirklich versucht, SO Markdown zu verstehen, ich habe aufgehört :).Nachdem ich mehr als 3 Stunden mit einem so vollständigen Thema verschwendet hatte, beschloss ich, mein Setup mit Ihnen zu teilen. Meine Konfiguration ist Visual Express 2012 für Web Update 4 unter Windows 8. Dies war meine erste Rückkehr zu MS VS seit dem Studium (mindestens 8 Jahre) und jetzt bin ich sicher, dass Linux-Regeln gelten. Auf Django brauchte ich 10 Minuten, um die Dokumentation zu durchsuchen.
Schalten Sie die Firewall zum Testen aus
Setup-Bindungen in meinem Fall lautet localIP = 192.168.1.102 (da Links keine nicht numerische Domäne enthalten können, verwenden Sie sie unten anstelle von mylocaldomain.com, siehe Stackoverflow-Richtlinie) in
Documents\IISExpress\config\applicationhost.config
Autorun für ISS Express-Startdienst automatisch hinzufügen
Fügen Sie dem http-Server einige seltsame Regeln hinzu (ich weiß immer noch nicht, ob dies nesseary ist)
Führen Sie IISExpress manuell aus, nicht über VS IDE
http://mylocaldomain.com:53351
Wenn der Browser funktioniert, können wir eine Firewall-Regel hinzufügenFirewall-Regel hinzufügen
Setzen Sie remoteip auf any, wenn Sie von außerhalb auf Ihren Server zugreifen möchten, wenn Sie für das lokale Netzwerk auf localubnet zugreifen möchten
Firewall starten
Überprüfen Sie erneut, ob auf der lokalen und öffentlichen IP-Adresse alles funktioniert
Wünsch dir Glück
Rafal
quelle
netsh http delete urlacl url=http://*:55416/
(Port durch Ihren Port ersetzen)localhost
. Ich fand , dass der Gast (Windows) Computername in den Bindungen sein mußte inapplicationhost.config
und auf dem Host (Mac) auf den Computernamen Gast benötigt , um abgebildet werden127.0.0.1
in/etc/hosts
. Erst dann war eine Anforderung an den Gastcomputer auf dem Host erfolgreich.Ich habe festgestellt, dass das Problem mit einer schlechten URL-Zuordnung zu tun hat. Um dies herauszufinden:
und suchen Sie nach Dingen wie
http://+:80/
oder dem Port, an den Sie binden.Dann benutze
Dies hat das Problem für mich behoben.
quelle
netsh http delete urlacl <yoururl>
Bei mir hat nichts funktioniert. Endlich habe ich iisexpress-proxy gefunden
Siehe meine Antwort https://stackoverflow.com/a/33623399/631527
Eine andere Lösung ist
ngrok
quelle
3028
. Ich rannteiisexpress-proxy 3028 to 12345
und dann./ngrok.exe http 12345
. 😅Was mir geholfen hat, war das Klicken mit der rechten Maustaste auf das IISExpress-Symbol "Alle Anwendungen anzeigen". Dann wählte ich die Website aus und sah, welche aplicationhost.config verwendet wird, und die Korrektur verlief perfekt.
quelle
Das Problem besteht darin, die Datei applicationhost.config im Webordner anstelle der Datei der Lösung zu aktualisieren. Die Lösungskonfigurationsdatei muss geändert werden
quelle
Vergessen Sie nach der Lösung von @vikomall nicht, VS als Administrator zu starten. Das behebt es für mich.
quelle
In Bezug auf Anthony Rizzolos Antwort: In Windows 8.1 musste ich Folgendes eingeben:
Beispielsweise:
quelle
Keine der obigen Antworten hat bei mir funktioniert.
Ich habe zwei Einträge in netsh für den gleichen Dienst gehabt
netsh http show urlacl
Einer verwendet einen starken Platzhalter, der andere einen schwachen Platzhalter.
Das Entfernen desjenigen mit dem schwachen Platzhalter hat den Job gemacht.
Mehr über die starke und schwache Wildcard im Kontext von Netsh
https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings
quelle