Kiedy próbuję uruchomić moją aplikację internetową na porcie 8080, pojawia się następujący błąd
Złe żądanie - nieprawidłowa
nazwa hosta Błąd HTTP 400. Żądana nazwa hosta jest nieprawidłowa.
Nie wiem nawet, od czego zacząć diagnozowanie tego problemu
Odpowiedzi:
Czy sprawdziłeś, że powiązanie to IIS? (inetmgr.exe) Może nie być zarejestrowany do akceptowania wszystkich nazw hostów na 8080.
Na przykład, jeśli ustawisz go dla mysite.com:8080 i trafisz na localhost: 8080, IIS otrzyma żądanie, ale nie będzie miało powiązania nazwy hosta, więc odrzuca.
Poza tym powinieneś sprawdzić dzienniki IIS (C: \ inetpub \ logs \ wmsvc #) na serwerze i zobaczyć, czy widzisz swoje żądanie. Wtedy będziesz wiedział, czy jest to problem na twoim kliencie, czy na samym serwerze.
FWIW, jeśli chcesz po prostu zezwolić na żądania kierowane do dowolnej nazwy hosta / adresu IP, możesz ustawić swoje powiązanie w następujący sposób:
<binding protocol="http" bindingInformation="*:80:*" />
Używam tego powiązania, aby móc załadować maszynę wirtualną za pomocą IE6, a następnie debugować moją aplikację.
EDYCJA: Podczas korzystania z usług IIS Express do debugowania domyślną lokalizacją pliku konfiguracyjnego tej opcji jest
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
Na tej stronie firmy Microsoft opisano, jak skonfigurować dostęp do IIS Server Express z innych komputerów w sieci lokalnej.
W skrócie:
1) z wiersza poleceń z uprawnieniami administratora:
netsh http add urlacl url=http://[your ip address]:8181/ user=everyone
2) W Zaporze systemu Windows z zabezpieczeniami zaawansowanymi utwórz nową regułę ruchu przychodzącego dla portu 8181, aby zezwolić na połączenia zewnętrzne
3) W pliku applicationhost.config w węźle projektu dodaj:
<binding protocol="http" bindingInformation="*:8181:[your ip address]" />
NIE dodawaj (jak zasugerowano w innej odpowiedzi):
<binding protocol="http" bindingInformation="*:8181:*" />
Powyższe powiązanie z symbolem wieloznacznym zepsuło mi dostęp http://192.168.1.6:8181/
netsh http delete urlacl url=http://[your ip address]:8181/
Dla Visual Studio 2017i Visual Studio 2015, IIS Expressustawienia są przechowywane w ukrytym .vskatalogu i ścieżka jest coś takiego .vs\config\applicationhost.config, jak poniżej dodać wiążące będą prace
<bindings>
<binding protocol="http" bindingInformation="*:8802:localhost" />
<binding protocol="http" bindingInformation="*:8802:127.0.0.1" />
</bindings>
<bindings> <binding protocol="http" bindingInformation="localhost:8802:*" /> <binding protocol="http" bindingInformation="127.0.0.1:8802:*"/> </bindings>
Nie zapomnij również o powiązaniu z adresem IPv6! Próbowałem dodać witrynę na 127.0.0.1 przy użyciu hosta lokalnego i otrzymałem błędne żądanie / nieprawidłową nazwę hosta. Kiedy pingowałem localhost, problem rozwiązał się na :: 1, ponieważ IPv6 był włączony, więc musiałem tylko dodać dodatkowe powiązanie, aby naprawić problem.
To rozwiązało mój problem (przepraszam za mój zły angielski):
otwórz cmd jako administrator i uruchom polecenie (bez nawiasów kwadratowych):
netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone
w documents/iisexpress/config/applicationhost.configi w głównym folderze projektu w (ukrytym) folderze: .vs/config/applicationhost.configmusisz dodać wiersz do tagu „witryna”:
<binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />
otwórz „menedżera internetowych usług informacyjnych (iis)”
(aby go znaleźć: w wyszukiwarce na pasku zadań wpisz „Włącz lub wyłącz funkcje okna” i otwórz wynik, a następnie zaznacz pole wyboru „usługa informacji internetowej” i zainstaluj ją):
otwórz "Zapora systemu Windows z zabezpieczeniami zaawansowanymi",
Gotowe.
Nie jestem pewien, czy to był twój problem, ale dla każdego, kto próbuje uzyskać dostęp do swojej aplikacji internetowej ze swojego komputera i ma ten problem:
Upewnij się, że łączysz się z 127.0.0.1(inaczej localhost), a nie z zewnętrznym adresem IP.
Twój adres URL powinien być coś podobnego http://localhost:8181/albo http://127.0.0.1:8181i nie http://YourExternalIPaddress:8181/ .
Kiedy łączysz się ze swoim zewnętrznym adresem IP, łączysz się z Tobą przez Internet, tak jakbyś był nieznajomym (lub hakerem).
Jednak kiedy łączysz się ze swoim lokalnym hostem, łączysz się lokalnie jako Ty i blok oczywiście nie jest potrzebny (i całkowicie go unikasz).
localhost, że to się odnosi do ( 127.0.0.1). Mówię tylko, żeby połączyć się z tym, a nie z zewnętrznym widocznym adresem IP. Nie ma polegania na hoście lokalnym, jest on używany tylko jako synonim. Zmienię odpowiedź, aby była jaśniejsza.
Sprawdź lokalny plik hostów (na przykład C: \ Windows \ System32 \ drivers \ etc \ hosts). W moim przypadku wcześniej użyłem tego do wskazania adresu URL do skrzynki deweloperskiej, a następnie zapomniałem o tym. Kiedy ponownie użyłem tego samego adresu URL, otrzymywałem złe żądanie (nieprawidłowa nazwa hosta), ponieważ ruch kierował się na niewłaściwy serwer.
Widziałem ten sam błąd po użyciu msdeploy do skopiowania aplikacji na nowy serwer. Okazało się, że powiązania nadal korzystały z adresu IP z poprzedniego serwera. Dlatego sprawdź dokładnie adres IP w powiązaniach usług IIS. (Po fakcie wydaje się oczywiste, ale nie przyszło mi od razu do głowy, żeby to sprawdzić).