Korzystanie z domen niestandardowych w IIS Express

304

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.configpliku 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?

Nick Berardi
źródło
Upewnij się, że atrybut applicationPool węzła aplikacji jest ustawiony na „Clr2IntegratedAppPool” lub „Clr4IntegratedAppPool”. Wystąpił błąd niepoprawnej nazwy hosta, który pojawia się podczas używania „Clr2ClassicAppPool” lub „Clr4ClassicAppPool”.
Neil Monroe
zmieszany - rekordy CNAME nie akceptują adresów IP, lecz inne nazwy hostów. Miałeś na myśli A record?
Scott Coates,
1
Miałem z tym wiele problemów i znacznie łatwiej było po prostu użyć IIS zamiast IIS Express
user0b101010
Właśnie na to wpadłem. Miałem nadzieję, że po prostu spojrzy na numer portu i zignoruje domenę. Nie ma takiego szczęścia. Chciałbym móc włączyć opcję „akceptuj wszystko” w porcie ....
Brady Moritz
Głosuj teraz! Dodałem sugestię UserVoice: visualstudio.uservoice.com/forums/121579-visual-studio/…
Luke Puplett

Odpowiedzi:

367

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 ):

  1. Kliknij prawym przyciskiem myszy swój projekt aplikacji internetowej ▶ PropertiesWeb, a następnie skonfiguruj Serverssekcję w następujący sposób:
    • Wybierz IIS Express ▼z menu rozwijanego
    • URL projektu: http://localhost
    • Zastąp główny adres URL aplikacji: http://dev.example.com
    • Kliknij Create Virtual Directory(jeśli pojawi się tutaj błąd, konieczne może być wyłączenie IIS 5/6/7/8, zmiana IIS na Default Sitenic innego niż port :80, upewnienie się, że Skype nie używa portu 80 itp.)
  2. Opcjonalnie: Ustaw Start URLnahttp://dev.example.com
  3. 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:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation=":80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>
    
  4. Jeśli korzystasz z MVC: upewnij się, że applicationPooljest ustawiona jedna z opcji „zintegrowanych” (takich jak „Clr2IntegratedAppPool”).

  5. Otwórz hostsplik i dodaj linię 127.0.0.1 dev.example.com.
  6. ► Start Twoje zgłoszenie!

Kilka świetnych porad z komentarzy:

  • Może być konieczne uruchomienie programu Visual Studio jako administrator.
  • Jeśli chcesz, aby inni deweloperzy zobaczyli, że Twoje IIS działają netsh http add urlacl url=http://dev.example.com:80/ user=everyone
  • Jeśli chcesz, aby witryna została rozpoznana dla wszystkich zestawów hostów bindingInformation="*:80:". Użyj dowolnego portu, 80 jest po prostu wygodny.
David Murdoch
źródło
12
Właśnie to zrobiłem, właśnie miałem to napisać, ale pobiłeś mnie do sedna :-) Na marginesie, jeśli chcesz, aby inni deweloperzy widzieli twój IIS, możesz chcieć zrobić coś takiego: „netsh http add urlacl url = dev.example.com:80 użytkownik = wszyscy "
EBarr
6
Ponadto, jeśli chcesz, aby strona była rozpoznawana dla wszystkich hostów, możesz użyć: bindInformation = "*: 80:" Używam tego, aby localtunnel.com działał.
Lance Fisher
17
Wystąpił błąd odmowy dostępu. Uruchamianie VS 2012 jako administrator to naprawiło.
xanadont,
3
jaka to wersja IIS Express? Korzystam z VS2012 (który moim zdaniem to IIS Express 8.0), a kiedy klikam przycisk radiowy „Użyj lokalnego serwera IIS” w obszarze „Serwery” na stronie właściwości sieci Web, kliknij pole wyboru Użyj IIS Express, a następnie spróbuj wstawić „ mydev.example.com ”, a następnie nacisnąć przycisk „Utwórz katalog wirtualny ”, pojawia się błąd „Nie można utworzyć katalogu wirtualnego. Nie można utworzyć strony internetowej mydev.example.com”. Musisz podać „localhost” jako nazwę serwera.
Michael McCarthy
12
To jest skomplikowane. Należy zmienić ustawienia w kilku różnych miejscach. Łatwo jest zrobić prawdziwy bałagan. Czy naprawdę nie ma prostszego sposobu?
Anderson
151

W przypadku programu Visual Studio 2015 obowiązują kroki podane w powyższych odpowiedziach, ale applicationhost.configplik 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 wersje applicationhost.configna twoim komputerze.

\.vs\config

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:

wprowadź opis zdjęcia tutaj

Z następującym plikiem w moim pliku hosts:

127.0.0.1       jam.net
127.0.0.1       www.jam.net

Oraz następujące w moim pliku applicationhost.config:

<site name="JBN.Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Dev\Jam\shoppingcart\src\Web\JBN.Site" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:49707:" />
            <binding protocol="http" bindingInformation="*:49707:localhost" /> 
    </bindings>
</site>

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.

njfife
źródło
9
Kluczową częścią jest dodanie drugiego *:49707:wiązania zamiast zastępowania domyślnego, *:49707:localhostjak sugerowano w wielu innych odpowiedziach. I rzeczywiście musisz uruchomić VS jako administrator (sic!). Dziękuję Ci.
fracz
3
Możesz także użyć adresu URL, np. 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 .
Zack Martin
1
Myślę, że warto zauważyć, że folder „.vs” jest ukryty i powinien być najpierw widoczny
Rozczarowany
3
Potwierdziłem, że działa to również w Visual Studio 2017. Co ciekawe, nie potrzebowałem obu elementów <binding> (tylko pierwszy bez „localhost”). Jednak Visual Studio z pewnością musi działać jako Administrator, co jest dość denerwujące
Loren Paulsen
1
Chciałbym tylko, aby istniał sposób dla tych z nas, którym nie wolno zarządzać niczym administracyjnym, aby to zrobić. Pracodawcy / klienci, którzy ograniczają uprawnienia administratora bez zastanowienia się, jak mogliby to bezpiecznie włączyć, są niezwykle krótkowzroczni.
Steve Pettifer
44

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:

  1. Utwórz aplikację internetową i dowiedz się, jakiego portu używa (patrz właściwości projektu, karta internetowa, adres URL projektu).
  2. W wierszu administratora uruchom następujące polecenia (zastępując numer portu numerem portu podanym w punkcie 1):

    netsh http add urlacl url="http://*:portnumber/" user=everyone
    netsh http add urlacl url="http://localhost:portnumber/" user=everyone
    

Możesz także użyć swojej nazwy użytkownika (DOMAIN \ USER) zamiast wszystkich, aby zwiększyć bezpieczeństwo.

  1. Otwórz applicationhost.config (zwykle w folderze Moje dokumenty \ IIS Express \ config) i znajdź element o numerze portu.
  2. Dodaj jeszcze jedno powiązanie z żądaną nazwą hosta (w tym przypadku *). Na przykład:

    <site name="MvcApplication1" id="2">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\sites\MvcApplication1" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:12853:localhost" />
            <binding protocol="http" bindingInformation="*:12853:*" />
        </bindings>
    </site>
    

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.

dmatson
źródło
To samo (pierwsze podejście) podczas przeglądania mycustomhost: myportnr dostaję „Usługa niedostępna”. VS2012. Nie mogę wypróbować drugiego, ponieważ nie ma IIS Express pod „My Documents” i applicationhost.config, które znalazłem w c: \ Program files \ IIS Express nie miał konfiguracji mojej aplikacji internetowej ...
firepol
2
W wersji VS2013 uznaję, że ta konfiguracja działa tylko wtedy, gdy uruchomię jako administrator! (Uruchomiony jako nieadministracyjny, IIS Express wydaje się ignorować 2. wiązanie - jeśli otworzę jego interfejs użytkownika z ikony powiadomienia, IIS pokazuje moją witrynę jako działającą, ale pokazuje tylko pierwsze powiązanie i mogę używać tylko lokalnego hosta ... Jeśli Pracuję jako administrator, pokazuje oba powiązania w interfejsie użytkownika i oba działają.) Dodałem adresy URL za pomocą narzędzia netsh, ale wydaje się, że to nie ma znaczenia - IIS Express wydaje się nawet nie próbować wiązać niczego innego niż localhost jeśli nie jest podniesiony.
Ian Griffiths
Dodanie rekordu z *rozwiązaną „Usługą niedostępną” dla mnie.
jerone
Co ze scenariuszem, w którym musisz użyć HTTPS na porcie 443?
Kixoka,
@ Kixoka Próbuję uruchomić HTTPS. Udało mi się go uruchomić, ale przeglądarka skarży się, że certyfikat nie pasuje do domeny. Pomijam to, ale wszystkie zasoby nie ładują się, więc nie ma obrazów, skryptów ani CSS.
Prime By Design
24

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

  1. edytuj plik% windows% \ system32 \ drivers \ etc \ hosts, aby zmapować dev.example.com na 127.0.0.1 (wymagane uprawnienia administratora). Jeśli kontrolujesz serwer DNS (jak w przypadku Nicka), to wpis DNS jest wystarczający, ponieważ ten krok nie jest potrzebny.
  2. Jeśli uzyskujesz dostęp do Internetu za pośrednictwem serwera proxy, upewnij się, że dev.example.com nie zostanie przekazany do serwera proxy (musisz umieścić na liście wyjątków w przeglądarce (dla IE byłyby to Narzędzia / Opcje internetowe / Połączenia / Ustawienia Lan, następnie przejdź do serwera proxy / Advanced i umieść dev.example.com na liście wyjątków.
  3. 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>

  4. uruchom iisexpress /site:Site1lub otwórz Site1 w WebMatrix

Jaro Dunajsky
źródło
2
Cześć Jaro, dziękuję za pomoc, ale 127.0.0.1 jest ustawione w moim DNS, a nie w pliku hosts, aby wszyscy programiści mieli taki sam dostęp. Po drugie, nie mogę zmusić go do rozpoczęcia debugowania w VS, chyba że powiązanie zostanie ustawione jako „*: 1234: localhost”, co jest całkowicie bezużyteczną konfiguracją, ponieważ jest powiązane ze wszystkimi adresami IP na moim komputerze, ale akceptuje tylko nagłówki hosta „localhost” „. Dlaczego po prostu nie zrobili „127.0.0.1:1234:” i unikali tego całego badziewia. Nagłówki hosta nie są potrzebne, dopóki IP i port nie zostaną rozpoznane. A bieganie jako administrator to ogromny ból w dupie dla dużego zespołu. Co za katastrofa IIS Express.
Nick Berardi
1
Również jako odniesienie Bad Request - Invalid Hostnameoznacza, ż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”
Nick Berardi
2
Słyszę cię w sprawie 127.0.0.1. „Lokalny host” w powiązaniu jest zdecydowanie trudny, ponieważ nie obejmuje ruchu dla 127.0.0.1 . Projekt jest ograniczony przez dzisiejszą umowę http.sys (moduł obsługi protokołu HTTP), który rozpoznaje tylko „localhost” do użytku nieadministracyjnego. Wymaganie tylko dla administratora można złagodzić poprzez jednorazową rezerwację adresu URL za pomocą http.sys (zaktualizuje powyższe informacje). Proszę dać mi znać, że dokładnie używasz z Visual Studio (jest to VS2010 z SP1 Beta?). Spróbujmy nad tym popracować i (miejmy nadzieję) rozwiązać problem.
Jaro Dunajsky 18.01.11
Uwaga - jeśli widzisz błąd netsh.exe 87, parametr jest niepoprawny - może to być spowodowane pominięciem ścieżki URI (/) po nazwie hosta.
Tim Lovell-Smith
19

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ę.

rymo
źródło
3
uuuum, więc "*: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.
CWSpear
2
Wreszcie!! Również wykonałem wszystkie kroki w innym miejscu, a usunięcie * na końcu sprawiło, że zadziałało, dzięki!
Charles Philip
Chcę tylko powiedzieć, że to zadziałało dla mnie. Próbowałem zaakceptować odpowiedź i przywróciłem wszystkie zmiany do tego, co powiedziałeś, i wszystko działa świetnie. Używam VS2013 Update4.
JasonWilczak
To wydaje się działać idealnie. Korzystając z VS2017, nie jestem pewien, co umieścić w adresie URL projektu, aby zapisał to w pliku applicationhost.config? Czy można ustawić VS VSE?
Jim
8

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 podC:\Users\usr\Documents\IISExpress\config

    <site name="MySite" id="1">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Users\usr\Documents\Visual Studio 2012\Projects\MySite" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:8081:localhost" />
            <binding protocol="http" bindingInformation="*:8082:localhost" />
            <binding protocol="http" bindingInformation="*:8083:192.168.2.102" />
        </bindings>
    </site>
  • Ustaw IISExpress, aby działał Administratortak, aby mógł łączyć się z adresami zewnętrznymi (nie hostem lokalnym)
  • Uruchom Visual Stuio jako, Administratoraby mógł rozpocząć proces jako administrator, umożliwiając powiązanie.

W rezultacie możesz przeglądać 192.168.2.102w 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ć.

Daniel B. Chapman
źródło
8

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ą: Zrzut ekranu właściwości projektu


::The following configures IIS Express to bind to any address at the specified port

::remove binding if it already exists
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /-bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

::add the binding
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /+bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

Upewnij się tylko, że zmieniłeś numer portu na żądany port.

Jon
źródło
Jeden drobny dodatek tutaj. Utwórz reguły, aby otworzyć ten port w Zaporze systemu Windows. Potem zadziałało jak urok!
Peter M
Podoba mi się twoja odpowiedź, ponieważ edycja pliku .vs \ config \ applicationhost.config nie jest możliwa, gdy wielu programistów uruchamia IIS Express na swoich komputerach. Dziękuję Ci!
Colin,
6

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:

netsh http add urlacl url=http://yourcustomdomain.com:80/ user=everyone 

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /+bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

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)

netsh http delete urlacl url=http://yourcustomdomain.com:80/

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /-bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

Mam nadzieję, że ta informacja jest dla kogoś pomocna. Odkrycie tego zajęło mi trochę czasu.

Jesse Flint
źródło
4

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ń.

  1. Użyj WebMatrix, aby utworzyć nową witrynę z folderu w katalogu głównym aplikacji internetowej.
  2. Zamknij WebMatrix.
  3. Otwórz %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:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation="*:80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>

Jeśli korzystasz z MVC, ustaw wartość applicationPool na jedną z opcji „Zintegrowane”.

Neil Monroe
źródło
3

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 przez http://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:

  1. Uruchom Notatnik jako administrator i otwórz C: \ Windows \ System32 \ drivers \ etc \ hosts, dodaj mydomain 127.0.0.1 i zapisz plik;
  2. Otwórz projekt internetowy za pomocą programu Visual Studio 2013 (Uwaga: należy również uruchomić jako administrator), kliknij prawym przyciskiem myszy projekt -> Właściwości -> Internet (załóżmy, że adres URL projektu w opcji „IIS Express” to http://localhost:33333/), a następnie zmień go z http://localhost:33333/do http://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.
  3. Otwórz% USERPROFILE% \ My Documents \ IISExpress \ config \ applicationhost.config, wyszukaj „33333: localhost”, a następnie zaktualizuj go do „33333: mojadomena” i zapisz plik.
  4. Zapisz ustawienia, jak wspomniano w kroku 2.
  5. Kliknij prawym przyciskiem myszy stronę internetową w swoim studiu wizualnym i kliknij „Wyświetl w przeglądarce”. Teraz strona zostanie otwarta pod 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ął.

wcb1
źródło
1
Teraz to jest odpowiedź, że należy uznać za prawidłowe rozwiązanie! Upewnij się, że edytujesz plik applicationhost.config znajdujący się w .vs / config, jeśli korzystasz z programu Visual Studio 2015.
Fabio Salvalai,
1

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 .:

127.0.0.1 dev.example.com
::1 dev.example.com

Zorientowałem się, sprawdzając $ ping localhostz 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.

Morten Aslo-Petersen
źródło
0

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ą.

<bindings> 
    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>

Następnie przejdzie do http: //whthing.localhost: 12345 / uruchomi się.

MW247
źródło