Tradycyjnie korzystam z niestandardowych domen z moim serwerem programistycznym localhost. Coś w stylu:
dev.example.com
dev.api.example.com
Zapewniło mi to dużą elastyczność podczas pracy z zewnętrznymi interfejsami API, takimi jak Facebook. W przeszłości działało to doskonale z wbudowanym programem Visual Studio Development Server, ponieważ wszystko, co musiałem zrobić, to dodać CNAME do tych rekordów DNS, które wskazują 127.0.0.1
.
Nie udało mi się jednak uzyskać tego do pracy z IIS Express. Wszystko, co próbowałem, zawiodło. Dodałem nawet poprawną konfigurację XML do applicationHost.config
pliku dla IIS Express, ale wydaje się, że nie rozpoznaje wpisów tak prawidłowych jak prawdziwa instalacja IIS.
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
Ilekroć wchodzę w ten wiersz i próbuję poprosić http://dev.example.com:1288
, otrzymuję następujący komunikat:
Złe żądanie - nieprawidłowa nazwa hosta
Czy ktoś wie, czy brakuje mi czegoś oczywistego? Czy zespół IIS Express naprawdę nie potrafił przewidzieć tego rodzaju zastosowania?
źródło
Odpowiedzi:
To działało dla mnie (zaktualizowane dla VS 2013, zobacz historię zmian dla 2010, dla VS 2015 zobacz to: https://stackoverflow.com/a/32744234/218971 ):
Properties
▶Web
, a następnie skonfigurujServers
sekcję w następujący sposób:http://localhost
http://dev.example.com
Default Site
nic innego niż port:80
, upewnienie się, że Skype nie używa portu 80 itp.)Start URL
nahttp://dev.example.com
Otwórz
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP, Vista i 7) i edytuj definicję witryny w<sites>
bloku konfiguracji, tak aby była zgodna z następującymi:Jeśli korzystasz z MVC: upewnij się, że
applicationPool
jest ustawiona jedna z opcji „zintegrowanych” (takich jak „Clr2IntegratedAppPool”).hosts
plik i dodaj linię127.0.0.1 dev.example.com
.Kilka świetnych porad z komentarzy:
źródło
W przypadku programu Visual Studio 2015 obowiązują kroki podane w powyższych odpowiedziach, ale
applicationhost.config
plik znajduje się w nowej lokalizacji. W folderze „rozwiązanie” podążaj ścieżką, jest to mylące, jeśli dokonałeś aktualizacji i posiadasz DWIE wersjeapplicationhost.config
na twoim komputerze.W tym folderze zobaczysz plik applicationhost.config
Alternatywnie możesz po prostu przeszukać folder rozwiązania w poszukiwaniu pliku .config i znaleźć go w ten sposób.
Osobiście użyłem następującej konfiguracji:
Z następującym plikiem w moim pliku hosts:
Oraz następujące w moim pliku applicationhost.config:
Pamiętaj, aby uruchomić swoją instancję Visual Studio 2015 jako administrator! Jeśli nie chcesz tego robić za każdym razem, polecam to:
Jak domyślnie uruchomić Visual Studio jako Administrator
Mam nadzieję, że to komuś pomoże. Miałem problemy podczas próby aktualizacji do Visual Studio 2015 i zdałem sobie sprawę, że żadna z moich konfiguracji nie została przeniesiona.
źródło
*:49707:
wiązania zamiast zastępowania domyślnego,*:49707:localhost
jak sugerowano w wielu innych odpowiedziach. I rzeczywiście musisz uruchomić VS jako administrator (sic!). Dziękuję Ci.http://jam.127.0.0.1.xip.io/
Jeśli nie chcesz modyfikować pliku hosts. Ponadto współpracownicy nie będą musieli modyfikować swoich. Zobacz xip.io .Podczas korzystania z programu Visual Studio 2012 z IIS Express zmiana istniejącego powiązania nie działa na stałe. (Może to działać, dopóki nie zamkniesz VS, ale potem wszystko się naprawdę popsuło).
Kluczem jest utrzymanie istniejącego powiązania localhost i dodanie nowego powiązania po nim.
O ile nie działasz jako administrator, musisz także uruchomić
netsh add urlacl
(aby dać sobie uprawnienia do prowadzenia witryny innej niż localhost jako zwykły użytkownik).Jeśli chcesz zezwolić na dowolną nazwę hosta, pełny proces wygląda następująco:
W wierszu administratora uruchom następujące polecenia (zastępując numer portu numerem portu podanym w punkcie 1):
Możesz także użyć swojej nazwy użytkownika (DOMAIN \ USER) zamiast wszystkich, aby zwiększyć bezpieczeństwo.
Dodaj jeszcze jedno powiązanie z żądaną nazwą hosta (w tym przypadku *). Na przykład:
Zauważ, że jeśli chcesz otworzyć wszystkie nazwy hostów (*), potrzebujesz dwóch poleceń netsh (jednego dla * i jednego dla hosta lokalnego). Jeśli chcesz otworzyć tylko określoną nazwę hosta, nie potrzebujesz ściśle drugiego polecenia netsh (localhost); wystarczy ten o podanej nazwie hosta.
źródło
*
rozwiązaną „Usługą niedostępną” dla mnie.Niepoprawna nazwa hosta wskazuje, że rzeczywista witryna skonfigurowana w pliku konfiguracyjnym IIS Express nie jest (najprawdopodobniej) uruchomiona. IIS Express nie ma modelu procesu takiego jak IIS.
Aby witryna mogła zostać uruchomiona, musiałaby zostać uruchomiona jawnie (poprzez otwarcie i dostęp z poziomu webmatrix lub z wiersza poleceń wywołującego iisexpress.exe (z katalogu instalacyjnego) z parametrem / site.
Ogólnie rzecz biorąc, kroki pozwalające na używanie w pełni kwalifikowanych nazw DNS do użycia lokalnego to: Weźmy twój przykład nazwy DNS dev.example.com
Skonfiguruj powiązanie IIS Express dla swojej witryny (np. Witryna1), aby dołączyć dev.example.com. Do korzystania z powiązania potrzebne będą uprawnienia administracyjne. Alternatywnie można użyć jednorazowej rezerwacji adresu URL za pomocą http.sys za pomocą
netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>
uruchom
iisexpress /site:Site1
lub otwórz Site1 w WebMatrixźródło
Bad Request - Invalid Hostname
oznacza, że nazwa hosta, którego próbuję użyć, nie może zostać rozwiązana, ponieważ zespół IIS Express w swojej nieskończonej mądrości postanowił w szczególności wzywać „localhost” jako jedyny nagłówek hosta, który mógłby działać. I VS nie pozwoli ci uruchomić go w żaden inny sposób niż „*: 1234: localhost”Na moim WebMatrix IIS Instalacja ekspresowa zmienia od
"*:80:localhost"
na"*:80:custom.hostname"
nie działa ( „Bad hostname”, nawet przy odpowiednich etc \ hosts odwzorowań), ale"*:80:"
nie pracę - i żaden z dodatkowych kroków wymaganych przez innych odpowiedzi tutaj. Zauważ, że"*:80:*"
tego nie zrobi; zostaw drugą gwiazdkę.źródło
"*:80:*"
działało dla mnie, ale potem ponownie uruchomiłem komputer i nagle nie działał, dopóki go nie zmieniłem"*:80:"
i wszystko było dobrze! Dzięki.Próbowałem zintegrować publiczny adres IP z moim przepływem pracy i te odpowiedzi nie pomogły (lubię używać IDE jako IDE). Ale powyższe doprowadziło mnie do rozwiązania (po około 2 godzinach od uderzenia głową o ścianę, aby zintegrować ją z Visual Studio 2012 / Windows 8), oto co dla mnie zadziałało.
applicationhost.config wygenerowany przez VisualStudio pod
C:\Users\usr\Documents\IISExpress\config
Administrator
tak, aby mógł łączyć się z adresami zewnętrznymi (nie hostem lokalnym)Administrator
aby mógł rozpocząć proces jako administrator, umożliwiając powiązanie.W rezultacie możesz przeglądać
192.168.2.102
w moim przypadku i testować (na przykład w emulatorze Androida. Mam nadzieję, że to pomaga komuś innemu, ponieważ był to dla mnie zdecydowanie irytujący proces.Najwyraźniej jest to funkcja bezpieczeństwa, którą chciałbym wyłączyć.
źródło
Podobnie jak Jessa Flint powyżej , nie chciałem ręcznie edytować pliku .vs \ config \ applicationhost.config, ponieważ chciałem, aby zmiany pozostały w kontroli źródła. Nie chciałem też mieć osobnego pliku wsadowego. Używam VS 2015 .
Właściwości projektu → Zdarzenia kompilacji → Wiersz polecenia zdarzenia przed kompilacją:
Upewnij się tylko, że zmieniłeś numer portu na żądany port.
źródło
Podwyższona odpowiedź jest poprawna… i ta informacja bardzo mi pomogła. Wiem, że ten temat był już wcześniej omawiany, ale chciałem dodać dodatkowe informacje. Ludzie mówią, że musisz „ręcznie edytować” plik application.config w katalogu Users IISExpress / Config. To był dla mnie duży problem, ponieważ chciałem rozpowszechniać konfigurację za pomocą kontroli źródła wśród różnych programistów.
Odkryłem, że możesz zautomatyzować aktualizację tego pliku za pomocą programu „C: \ Program Files \ IIS Express \ appcmd.exe”. Zajęło mi trochę czasu znalezienie parametrów kontrolnych, ale podzielę się tutaj swoimi odkryciami. Zasadniczo możesz utworzyć plik .bat, który uruchamia zarówno polecenie NETSH, jak i APPCMD.EXE (i być może zamienić plik hosta, jeśli chcesz), aby ułatwić konfigurację nagłówka hosta za pomocą IIS Express.
Twój plik instalacyjny nietoperza wyglądałby mniej więcej tak:
Zrobię też plik nietoperza „Odinstaluj”, który wyczyści te powiązania .. (ponieważ często udaje mi się tylko wyłudzić DNS, aby móc pracować na kodzie, który jest wrażliwy na nazwę hosta)
Mam nadzieję, że ta informacja jest dla kogoś pomocna. Odkrycie tego zajęło mi trochę czasu.
źródło
Podążając za radą Jaro, udało mi się uzyskać to pod Windows XP i IIS Express (instalowanym przez Web Matrix) z niewielką modyfikacją i nie ograniczałem się tylko do lokalnego hosta. To tylko kwestia prawidłowego ustawienia powiązań.
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(ścieżki systemu Windows XP. Vista i 7 będą podobne) i edytuj definicję witryny w<sites>
bloku konfiguracji, tak aby była zgodna z następującymi:Jeśli korzystasz z MVC, ustaw wartość applicationPool na jedną z opcji „Zintegrowane”.
źródło
Rozwiązanie Davida jest dobre. Ale znalazłem, że
<script>alert(document.domain);</script>
strona wciąż ostrzega „localhost”, ponieważ URL projektu jest nadal localhost, nawet jeśli został zastąpiony przezhttp://dev.example.com
. Innym problemem, na który natrafiam, jest to, że ostrzega mnie, że port 80 był już używany, nawet jeśli wyłączyłem Skype przy użyciu numeru portu 80, jak zalecił David Murdoch. Więc wymyśliłem inne rozwiązanie, które jest o wiele łatwiejsze:http://localhost:33333/
), a następnie zmień go zhttp://localhost:33333/
dohttp://mydomain:333333/
Uwaga: Po tej zmianie, należy ani kliknij przycisk „Create Virtual Directory” na prawo od pola Projekt Url ani kliknij przycisk Zapisz Visual Studio jak oni nie będą się udało. Możesz zapisać swoje ustawienia po następnym kroku 3.http://mydomain:333333/
, a<script>alert(document.domain);</script>
na stronie pojawi się ostrzeżenie „mojadomena”.Uwaga: Zakłada się, że wymieniony powyżej numer portu to 33333. Musisz go zmienić na numer portu ustawiony przez studio wizualne.
Edytowany post: Dzisiaj próbowałem z inną nazwą domeny i otrzymałem następujący błąd: Nie można uruchomić serwera sieci Web IIS Express. Rejestracja adresu URL nie powiodła się ... Odmowa dostępu. (0x80070005) . Wychodzę z IIS Express klikając prawym przyciskiem myszy ikonę IIS Express w prawym rogu paska zadań Windows, a następnie ponownie uruchamiam moje studio graficzne jako administrator i problem zniknął.
źródło
Próbowałem wszystkich powyższych, nic nie działało. Rozwiązaniem problemu było dodanie powiązań IPv6 w pliku hosts. W kroku 5 odpowiedzi @David Murdochs dodaj dwa wiersze zamiast jednego, tj .:
Zorientowałem się, sprawdzając
$ ping localhost
z wiersza poleceń, który kiedyś zwracał:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Zamiast tego zwraca teraz:
Reply from ::1: time<1ms
Nie wiem dlaczego, ale z jakiegoś powodu IIS Express zaczął używać IPv6 zamiast IPv4.
źródło
Użyłem do tego iisexpress-proxy (z npm).
https://github.com/icflorescu/iisexpress-proxy
źródło
Zostawiając to tutaj na wypadek, gdyby ktoś potrzebował ...
Musiałem mieć niestandardowe domeny dla konfiguracji Wordpress Multisite w IIS Express, ale nic nie działało, dopóki nie uruchomiłem Webmatrix / Visual Studio jako administrator. Następnie mogłem powiązać poddomeny z tą samą aplikacją.
Następnie przejdzie do http: //whthing.localhost: 12345 / uruchomi się.
źródło