Traditionell verwende ich benutzerdefinierte Domänen mit meinem localhost-Entwicklungsserver. Etwas in der Art von:
dev.example.com
dev.api.example.com
Dies hat mir eine Menge Flexibilität bei der Arbeit mit externen APIs wie Facebook gegeben. Dies hat in der Vergangenheit mit dem integrierten Visual Studio Development Server hervorragend funktioniert, da ich diesen DNS-Einträgen, auf die verwiesen wird, lediglich einen CNAME hinzufügen musste 127.0.0.1
.
Es ist mir jedoch nicht gelungen, dies mit IIS Express zum Laufen zu bringen. Alles, was ich versucht habe, scheint gescheitert zu sein. Ich habe der applicationHost.config
Datei für IIS Express sogar die richtige XML-Konfiguration hinzugefügt , aber die Einträge scheinen nicht so gültig zu sein, wie es eine echte Installation von IIS tun würde.
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
Immer wenn ich diese Zeile eingebe und versuche anzufordern, http://dev.example.com:1288
erhalte ich die folgende Meldung:
Falsche Anfrage (ungültiger Hostname
Weiß jemand, ob mir etwas Offensichtliches fehlt? Oder fehlte dem IIS Express-Team wirklich die Voraussicht, diese Art der Verwendung zu sehen?
quelle
Antworten:
Dies hat bei mir funktioniert (Aktualisiert für VS 2013, siehe Versionsverlauf für 2010, für VS 2015 siehe: https://stackoverflow.com/a/32744234/218971 ):
Properties
Maustaste auf Ihr Webanwendungsprojekt ▶ ▶Web
, und konfigurieren Sie denServers
Abschnitt wie folgt:http://localhost
http://dev.example.com
Default Site
auf etwas anderes als Port ändern:80
, sicherstellen, dass Skype Port 80 nicht verwendet usw.)Start URL
auf einhttp://dev.example.com
Öffnen Sie
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP, Vista und 7) und bearbeiten Sie die Site-Definition im<sites>
Konfigurationsblock so, dass sie wie folgt aussieht:Wenn Sie MVC
applicationPool
ausführen: Stellen Sie sicher, dass eine der Optionen "Integriert" (wie "Clr2IntegratedAppPool") aktiviert ist.hosts
Datei und fügen Sie die Zeile hinzu127.0.0.1 dev.example.com
.Einige gute Ratschläge aus den Kommentaren:
quelle
Für Visual Studio 2015 gelten die Schritte in den obigen Antworten, aber die
applicationhost.config
Datei befindet sich an einem neuen Speicherort. Folgen Sie in Ihrem "Lösungs" -Ordner dem Pfad. Dies ist verwirrend, wenn Sie ein Upgrade durchgeführt haben und ZWEI Versionen vonapplicationhost.config
auf Ihrem Computer haben würden.In diesem Ordner sehen Sie Ihre Datei applicationhost.config
Alternativ können Sie auch Ihren Lösungsordner nach der .config-Datei durchsuchen und auf diese Weise finden.
Ich persönlich habe folgende Konfiguration verwendet:
Mit folgendem in meiner Hosts-Datei:
Und Folgendes in meiner Datei applicationhost.config:
Denken Sie daran, Ihre Instanz von Visual Studio 2015 als Administrator auszuführen! Wenn Sie dies nicht jedes Mal tun möchten, empfehle ich Folgendes:
So führen Sie Visual Studio standardmäßig als Administrator aus
Ich hoffe, dies hilft jemandem. Ich hatte Probleme beim Upgrade auf Visual Studio 2015 und stellte fest, dass keine meiner Konfigurationen übernommen wurde.
quelle
*:49707:
Bindung hinzuzufügen , anstatt die in vielen anderen Antworten vorgeschlagene Standardeinstellung zu ersetzen*:49707:localhost
. Und Sie müssen VS tatsächlich als Administrator ausführen (sic!). Danke dir.http://jam.127.0.0.1.xip.io/
wenn Sie Ihre Hosts-Datei nicht ändern möchten. Außerdem müssen Mitarbeiter ihre nicht ändern. Siehe xip.io .Wenn Sie Visual Studio 2012 mit IIS Express verwenden, funktioniert das Ändern einer vorhandenen Bindung nicht dauerhaft. (Es kann funktionieren, bis Sie VS schließen, aber danach werden die Dinge wirklich durcheinander gebracht.)
Der Schlüssel besteht darin, die vorhandene localhost-Bindung beizubehalten und danach eine neue Bindung hinzuzufügen .
Sofern Sie nicht als Administrator ausgeführt werden, müssen Sie auch ausführen
netsh add urlacl
(um sich die Berechtigung zu erteilen, eine nicht lokale Host-Site als Standardbenutzer auszuführen).Wenn Sie einen beliebigen Hostnamen zulassen möchten, gehen Sie wie folgt vor:
Führen Sie an einer Administrator-Eingabeaufforderung die folgenden Befehle aus (Ersetzen Sie Portnummer durch die Portnummer, die Sie in Nummer 1 herausgefunden haben):
Sie können zur besseren Sicherheit auch Ihren Benutzernamen (DOMAIN \ USER) anstelle aller verwenden.
Fügen Sie eine weitere Bindung mit dem gewünschten Hostnamen hinzu (in diesem Fall *). Zum Beispiel:
Beachten Sie, dass Sie zum Öffnen aller Hostnamen (*) zwei netsh-Befehle benötigen (einen für * und einen für localhost). Wenn Sie nur einen bestimmten Hostnamen öffnen möchten, benötigen Sie nicht unbedingt den zweiten Befehl netsh (localhost). Nur der mit Ihrem spezifischen Hostnamen ist ausreichend.
quelle
*
gelösten "Service nicht verfügbar" für mich.Der ungültige Hostname gibt an, dass die tatsächlich in der IIS Express-Konfigurationsdatei konfigurierte Site (höchstwahrscheinlich) nicht ausgeführt wird. IIS Express verfügt nicht über ein Prozessmodell wie IIS.
Damit Ihre Site ausgeführt werden kann, muss sie explizit gestartet werden (entweder durch Öffnen und Zugreifen über die Webmatrix oder über die Befehlszeile, in der iisexpress.exe (aus dem Installationsverzeichnis) mit dem Parameter / site aufgerufen wird.
Im Allgemeinen werden folgende Schritte ausgeführt, damit vollständig qualifizierte DNS-Namen für den lokalen Zugriff verwendet werden können. Verwenden wir Ihr Beispiel für den DNS-Namen dev.example.com
Konfigurieren Sie die IIS Express-Bindung für Ihre Site (z. B. Site1) so, dass sie dev.example.com enthält. Für die Verwendung der Bindung sind Administratorrechte erforderlich. Alternativ kann eine einmalige URL-Reservierung mit http.sys unter Verwendung von vorgenommen werden
netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>
Starten
iisexpress /site:Site1
oder öffnen Sie Site1 in WebMatrixquelle
Bad Request - Invalid Hostname
bedeutet dies, dass der Hostname, den ich verwenden möchte, nicht aufgelöst werden kann, da das IIS Express-Team in seiner unendlichen Weisheit beschlossen hat, "localhost" als den einzigen Host-Header zu nennen, der funktionieren würde. Und VS lässt Sie nicht anders laufen als "*: 1234: localhost"Auf meinem WebMatrix IIS Express installiert von Wechsel
"*:80:localhost"
zu"*:80:custom.hostname"
nicht funktioniert hat ( „Bad Hostnamen“, auch mit dem richtigen etc \ hosts - Mappings), aber"*:80:"
tat Arbeit - und mit keinem der zusätzlichen Schritten von den anderen Antworten hier erforderlich. Beachten Sie, dass dies"*:80:*"
nicht der Fall ist. Lassen Sie das zweite Sternchen weg.quelle
"*:80:*"
hat es für mich funktioniert, aber dann habe ich meinen Computer neu gestartet und es würde plötzlich nicht mehr funktionieren, bis ich es geändert habe"*:80:"
und alles in Ordnung war! Vielen Dank.Ich habe versucht, die öffentliche IP-Adresse in meinen Workflow zu integrieren, und diese Antworten haben nicht geholfen (ich verwende die IDE gerne als IDE). Aber das Obige hat mich zu der Lösung geführt (nachdem ich ungefähr 2 Stunden lang meinen Kopf gegen eine Wand geschlagen habe, um diese in Visual Studio 2012 / Windows 8 zu integrieren), hat sich Folgendes für mich bewährt.
applicationhost.config generiert von VisualStudio unter
C:\Users\usr\Documents\IISExpress\config
Administrator
so ein, dass es so ausgeführt wird, dass es an externe Adressen (nicht an lokale Hosts) gebunden werden kann.Administrator
, damit der Prozess als Administrator gestartet werden kann, damit die Bindung stattfinden kann.Das Nettoergebnis ist, dass Sie
192.168.2.102
in meinem Fall nachsehen und testen können (zum Beispiel in einem Android-Emulator. Ich hoffe wirklich, dass dies jemand anderem hilft, da dies definitiv ein irritierender Prozess für mich war.Anscheinend ist es eine Sicherheitsfunktion, die ich gerne deaktiviert sehen würde.
quelle
Wie bei Jessa Flint oben wollte ich .vs \ config \ applicationhost.config nicht manuell bearbeiten, da die Änderungen in der Quellcodeverwaltung beibehalten werden sollen. Ich wollte auch keine separate Batch-Datei haben. Ich benutze VS 2015 .
Projekteigenschaften → Ereignisse erstellen → Ereignisbefehlszeile vor dem Erstellen:
Stellen Sie einfach sicher, dass Sie die Portnummer auf den gewünschten Port ändern.
quelle
Die hochgestimmte Antwort ist gültig. Diese Informationen haben mir sehr geholfen. Ich weiß, dass dieses Thema bereits besprochen wurde, wollte aber zusätzliche Informationen hinzufügen. Die Leute sagen, dass Sie die Datei application.config im Verzeichnis Users IISExpress / Config "manuell bearbeiten" müssen. Dies war ein großes Problem für mich, da ich die Konfiguration über die Quellcodeverwaltung an verschiedene Entwickler verteilen wollte.
Ich habe festgestellt, dass Sie die Aktualisierung dieser Datei mit dem Programm "C: \ Programme \ IIS Express \ appcmd.exe" automatisieren können. Es hat eine Weile gedauert, um die Kontrollparameter herauszufinden, aber ich teile meine Ergebnisse hier. Im Wesentlichen können Sie eine .bat-Datei erstellen, die sowohl den NETSH-Befehl als auch die APPCMD.EXE ausführt (und möglicherweise eine Hostdatei austauschen, wenn Sie möchten), um die Konfiguration des Host-Headers mit IIS Express zu vereinfachen.
Ihre Installations-Bat-Datei würde ungefähr so aussehen:
Ich werde auch eine "Deinstallations" -Bat-Datei erstellen, die diese Bindungen bereinigt. (Weil ich oft nur DNS vortäusche, damit ich an Code arbeiten kann, der für den Hostnamen empfindlich ist.)
Ich hoffe, diese Informationen sind für jemanden hilfreich. Ich habe ein bisschen gebraucht, um sie aufzudecken.
quelle
Nach Jaros Rat konnte ich dies unter Windows XP und IIS Express (über Web Matrix installiert) mit einer kleinen Änderung zum Laufen bringen und war nicht nur auf localhost beschränkt. Es geht nur darum, die Bindungen richtig einzustellen.
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP. Vista und 7 Pfade sind ähnlich) und bearbeiten Sie die Site-Definition im<sites>
Konfigurationsblock so, dass sie wie folgt aussieht:Wenn Sie MVC ausführen, lassen Sie den applicationPool auf eine der "Integrierten" Optionen eingestellt.
quelle
Davids Lösung ist gut. Aber ich fand, dass die
<script>alert(document.domain);</script>
auf der Seite immer noch "localhost" warnt, da die Projekt-URL immer noch localhost ist, auch wenn sie überschrieben wurdehttp://dev.example.com
. Ein weiteres Problem ist, dass ich benachrichtigt werde, dass der Port 80 bereits verwendet wurde, auch wenn ich Skype unter Verwendung der von David Murdoch empfohlenen 80-Portnummer deaktiviert habe. Also habe ich eine andere Lösung gefunden, die viel einfacher ist:http://localhost:33333/
) und ändern Sie sie vonhttp://localhost:33333/
bishttp://mydomain:333333/
Hinweis: nach dieser Änderung sollten Sie weder den Knopf auf der rechten Seite des Projekt - URL - Box „virtuelles Verzeichnis erstellen“ klicken Sie auf die Schaltfläche Speichern des Visual Studio noch klicken , da sie nicht erfolgreich sein wird. Sie können Ihre Einstellungen nach dem nächsten Schritt 3 speichern.http://mydomain:333333/
und<script>alert(document.domain);</script>
auf der Seite wird "mydomain" angezeigt.Hinweis: Die oben aufgeführte Portnummer wird als 33333 angenommen. Sie müssen sie in die von Ihrem Visual Studio festgelegte Portnummer ändern.
Nachbearbeitet: Heute habe ich es mit einem anderen Domainnamen versucht und die folgende Fehlermeldung erhalten: Der IIS Express-Webserver konnte nicht gestartet werden. URL konnte nicht registriert werden ... Zugriff verweigert. (0x80070005) . Ich beende IIS Express, indem ich mit der rechten Maustaste auf das IIS Express-Symbol in der rechten Ecke der Windows-Taskleiste klicke und dann mein Visual Studio als Administrator neu starte. Das Problem ist behoben.
quelle
Ich habe alles oben versucht, nichts hat funktioniert. Das Problem wurde durch Hinzufügen von IPv6-Bindungen zur Hosts-Datei behoben. Fügen Sie in Schritt 5 der Antwort von @David Murdochs zwei Zeilen anstelle einer hinzu, dh:
Ich habe es herausgefunden, indem ich über die
$ ping localhost
Befehlszeile nachgesehen habe, die früher zurückgegeben hat:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Stattdessen wird jetzt Folgendes zurückgegeben:
Reply from ::1: time<1ms
Ich weiß nicht warum, aber aus irgendeinem Grund hat IIS Express begonnen, IPv6 anstelle von IPv4 zu verwenden.
quelle
Ich habe dafür iisexpress-proxy (ab npm) verwendet.
https://github.com/icflorescu/iisexpress-proxy
quelle
Lassen Sie dies hier für den Fall, dass jemand ...
Ich brauchte benutzerdefinierte Domänen für ein Wordpress Multisite-Setup in IIS Express, aber nichts funktionierte, bis ich Webmatrix / Visual Studio als Administrator ausführte. Dann konnte ich Subdomains an dieselbe Anwendung binden.
Dann gehen Sie zu http: //whatever.localhost: 12345 / wird ausgeführt.
quelle