Konfigurieren Sie IIS Express für den externen Zugriff auf das VS2010-Projekt

103

Ich entwickle ein Projekt in VS2010 und kann meine Site lokal über IIS Express anzeigen. Ich möchte den externen Zugriff über das Netzwerk aktivieren.

Alles das hat mir meine Forschungen zu diesem Blog - Eintrag gesendet: http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx , die hilfreich ist , aber tut Es scheint nicht zu zeigen, wie Bindungen für ein in Visual Studio gestartetes Projekt konfiguriert werden (ich kann den Bildschirm in den Screenshots nicht finden und habe Bindungsinformationen in applicationhost.config bearbeitet, aber es scheint nicht wiedergegeben zu werden, wenn ich die Site aus starte visuelles Studio).

snumpy
quelle
10
Bitte lesen Sie Scott Hanselman Blog-Beitrag hanselman.com/blog/…
Balexandre
Mögliches Duplikat von IIS Express aktiviert externe Anfrage
abatishchev

Antworten:

136

1 Nach dem Bearbeiten der Datei applicationhost.config (im IISExpress-Ordner in Ihren Dokumenten) sollten Ihre Site-Bindungen wie folgt aussehen:

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

Bindungen bestehen aus drei Teilen. Erstens eine IP-Adresse oder Liste oder wie in diesem Fall ein Platzhalter. Zweitens die Portnummer und drittens ein Hostname, eine Liste oder ein Platzhalter (zum Filtern nach HostHeader). Für Entwicklungszwecke ist hier ein Platzhalter am besten geeignet, da Sie wahrscheinlich einen eindeutigen Port verwenden.

2 Da Sie eine nicht lokale Hostbindung verwenden, sind zusätzliche Berechtigungen erforderlich. Sie können VS als Administrator ausführen oder vorzugsweise URL-ACLs hinzufügen , um die erforderlichen Berechtigungen zu erteilen. Im folgenden Beispiel wird jedem die Berechtigung erteilt, Sie können jedoch Ihren eigenen Benutzernamen verwenden.

Hinweis: Das urlaclmuss genau mit der Bindung übereinstimmen. Ein urlaclfor http://*:8080erlaubt also eine Bindung von *:8080:*, aber keine Bindung von *:8080:localhost, obwohl das letztere eine Teilmenge des ersteren ist. Dies bedeutet, wenn Sie anstelle eines Platzhalters Host-Header auflisten applicationhost.config, müssen Sie urlaclfür jeden einen passenden Wert hinzufügen .

Die Schritte zum Konfigurieren von HTTP.sys für externen Datenverkehr ähneln dem Einrichten einer Site für die Verwendung eines reservierten Ports. Führen Sie unter Windows 7 oder Windows Vista an einer Eingabeaufforderung mit erhöhten Rechten den folgenden Befehl aus:

netsh http add urlacl url=http://*:8080/ user=DOMAIN\username

Führen Sie unter Windows XP den folgenden Befehl an einer Eingabeaufforderung mit erhöhten Rechten aus:

httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)

Hinweis 2 Wenn das Ausführen von VS als Administrator oder das Hinzufügen von ACL-Einträgen Ihr Problem nicht löst, führen Sie IIS Express über die Befehlszeile aus und prüfen Sie, ob Meldungen zu Bindungsfehlern bei der Registrierung vorliegen. Geben Sie den folgenden Befehl ein, um von der Befehlszeile aus zu starten:

iisexpress.exe /site:"your-site-name"

3 Schließlich benötigen Sie entsprechende Firewall-Einträge. Hierfür ist es am einfachsten, die Konsole "Windows-Firewall mit erweiterter Sicherheit" zu verwenden.

Wählen Sie unter "Eingehende Regeln" die Option "Neue Regel ...".

  • Der Regeltyp ist "Benutzerdefiniert".
  • Programm ist Dienste-> Anpassen ...-> Nur auf Dienste anwenden. (Obwohl IIS Express kein Dienst ist, wird der verwendete HTTP-Multiplexer verwendet.)
  • Das Protokoll ist TCP
  • Spezifische Ports: Listen Sie alle Ports für alle Ihre IIS Express-Bindungen auf. Sie können jederzeit zu dieser Regel zurückkehren und Ports hinzufügen. (Wenn dies lästig wird, können Sie einen Bereich hinzufügen, 40000-65534der den gesamten von Visual Studio verwendeten Bereich abdeckt. Beachten Sie jedoch, dass dies weniger sicher ist.)
  • Aktion ist "Verbindung zulassen"
  • Das Profil wird eines der folgenden sein. Im Zweifelsfall wählen Sie "Domain + privat".
    • "Domain", wenn Ihr Desktop ein Unternehmensdesktop ist und nur auf der lokalen Domain ausgeführt wird
    • "Domain + Private" Wenn es sich bei Ihrer um eine private Entwicklungsmaschine in einer Umgebung außerhalb des Unternehmens handelt oder um einen Unternehmens-Laptop, der auch von zu Hause aus arbeiten muss.
    • "Domain, privat und öffentlich", wenn Sie Demonstrationen in nicht privaten Netzwerken durchführen müssen.
  • Der Name sollte so etwas wie "IIS Express Dev Server" sein.
vikomall
quelle
12
@ user578913 Also habe ich endlich die richtige Datei applicationhost.config gefunden, indem ich die laufende IIS Express-Taskleiste geöffnet und darauf und dann auf den Link zur Konfigurationsdatei geklickt habe. Ich habe den Port in der zweiten Zeile auf 1063 gesetzt, da dies die erste Zeile war. Lief deine Kommandozeile und alles sah gut aus. Wenn ich von einem anderen Computer im Netzwerk zu Maschinenname oder Maschinenname 1063 gehe, erhalte ich immer noch nichts.
Snumpy
15
OK, da Visual Studio einen anderen Port (als 8080) zuweist, hat die Windows-Firewall diesen blockiert. Nach dem Ausschalten der Windows-Firewall (ich könnte wohl nur den Port öffnen, aber ich bin in einem sicheren Netzwerk) und der Verwendung der IP-Adresse meines Computers anstelle des Computernamens funktionierte dies. Vielen Dank. Ich würde abstimmen, habe aber noch keinen Repräsentanten = (
snumpy
3
Ja, wenn die Windows-Firewall aktiviert sein muss, fügen Sie explizit den TCP-Port 8080 hinzu (oder was Sie verwenden). In Windows 7 habe ich zunächst versucht, "IIS Express Worker Process" einen Port zuzuweisen. Aber es hat nicht funktioniert. Ich musste die Option "Neue Regel" verwenden und Port 8080 zulassen. Die Auswahl des Profils (Domain, Privat, Öffentlich) ist ebenfalls wichtig.
Gautam Jain
2
Hinweis für sich selbst: Wenn Ihnen der Zugriff verweigert wird, führen Sie Visual Studio als Administrator aus .
NVentimiglia
3
Ab VS2015 ist der Speicherort der Datei C:\<Path\To\Solution>\.vs\config\applicationhost.config. (Danke, @Talon)
snumpy
29

Ich habe mich auch stundenlang mit diesem Thema beschäftigt und versucht, von meinem Android Xoom zu meinem Win7-Entwicklungscomputer zu navigieren, um eine neue von mir erstellte asp.net-Web-App zu testen. Ich habe lediglich die applicationhost.config von IISExpress von der Verwendung des PC-Hostnamens in die aktuelle IP-Adresse des PCs für meine neue Site geändert.

<binding protocol="http" bindingInformation="*:80:dev-Lee" />

zu

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 

Nachdem ich dies getan und IISExpress neu gestartet hatte, konnte ich zu meinem Dev-Lee-Computer navigieren und meine App von meinem Xoom aus sehen!

leester39
quelle
10
Alles, was ich mit all diesen Lösungen bekomme, ist ein Fehler 400 - Bad Request. Irgendwelche Vorschläge?
Krumelur
2
@Krumelur, stellen Sie sicher, dass Sie die richtige applicationhost.config-Datei bearbeiten. die im Ordner Eigene Dateien.
Codler
14

Wir können mehrere Bindungsadressen hinzufügen, indem wir applicationhost.config von IIS Express bearbeiten

<bindings>
   <binding protocol="http" bindingInformation="*:62217:localhost" />
   <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
   <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>

Jetzt können wir von LAN aus über die IP-Adresse auf die Website zugreifen.

Zugriff auf lokale Websites von Lan aus mit IIS Express

Nasir Mahmood
quelle
6

Visual Studio 2013 SP1 und höher (2015) enthält die Einstellung "Servereinstellungen auf alle Benutzer anwenden (in Projektdatei speichern)". Dies ist standardmäßig aktiviert. Wenn aktiviert, startet Visual Studio IIS Express mit Befehlszeilenargumenten, mit denen eine andere Konfigurationsdatei verwendet wird. Der Speicherort der Datei 'applicationhost.config' befindet sich im Projektverzeichnis in '.vs \ config'.

Jon Eldridge
quelle
1
Ja, das war das Problem in meinem Fall - ich habe versucht, eine falsche Datei zu bearbeiten. Sie können sehen, wo sich die Konfiguration für Ihre IIS Express-App befindet, indem Sie auf das Taskleistensymbol klicken, alle Apps auflisten und Ihre auswählen. Der Pfad zur Konfigurationsdatei wird unten geschrieben. Mein war in .vs \ config
evilkos
1
Ja, das gleiche für mich. Vielen Dank.
Vas
1

Wenn Sie mit Visual Studio arbeiten, führen Sie die folgenden Schritte aus, um über die IP-Adresse auf IIS-Express zuzugreifen:

  1. Holen Sie sich Ihre Host-IP-Adresse: ipconfig in der Windows-Befehlszeile
  2. Gehe zu $ ​​(SolutionDir) .vs \ config \ applicationHost.config
  3. 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>
  4. Hinzufügen: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    mit Ihrer IP-Adresse
  5. Führen Sie Ihr Visual Studio mit Administratorrechten aus, und alles sollte funktionieren
  6. Suchen Sie möglicherweise nach Firewall-Problemen, wenn Sie versuchen, eine Verbindung über die Remote-Verbindung herzustellen

Der Hinweis ist, dass Visual Studio eine eigene applicationHost.config-Datei hat!

Daniel Eisenreich
quelle
0

Ich hatte große Probleme, dies von Visual Studio 2012 zum Laufen zu bringen. Ich ging von 404 Fehlern auf 503 Fehler über. Was für mich schließlich funktionierte, war, alle zugehörigen Konfigurationen in der IIS Express-Konfiguration zu löschen ...

"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy

Dann habe ich ein neues virtuelles Verzeichnis von der Eigenschaftenseite in meinem Webprojekt in VS erstellt, aber bevor ich das virtuelle Verzeichnis erstellt habe, habe ich den Hostnamen in http: // myhost: 80 / geändert dann auf die Schaltfläche "Virtuelles Verzeichnis erstellen" . Zuvor hatte ich Fehler erhalten, die besagten, dass der Hostname "localhost" sein muss, diesmal jedoch nicht. Und danach hat es funktioniert.

Kurz gesagt, löschen Sie zuerst die vorhandene Konfiguration und starten Sie erneut.

stu
quelle
-2

Wenn Ihre externe Domain "name.mydyndns.com" lautet, müssen Sie Folgendes schreiben:

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

Dies funktioniert unter Windows 2003 Server und IIS 7.5 Express.

Juan
quelle
-3

Bildschirmfoto

Setzen Sie im Anwendungspool auf IIS "32-Bit-Anwendungen aktivieren" auf "true".

Mürsel Yıldırım
quelle
Ich bin mir nicht sicher, ob dies tatsächlich die Frage anspricht. Wollten Sie dies auf eine andere Frage posten?
ckittel