Próbuję przetestować witrynę internetową uruchomioną w lokalnej instancji IISExpress na niektórych innych komputerach / urządzeniach w mojej sieci lokalnej. Używam Win7 Pro.
Kiedy po raz pierwszy próbuję przejść do mojego komputera z innego komputera w moim segmencie sieci lokalnej, pojawia się błąd 400: Nazwa hosta jest nieprawidłowa.
Rozumiem, że muszę przyznać zdalny dostęp do listy ACL za pomocą polecenia w wierszu polecenia z podwyższonym poziomem uprawnień, takiego jak:
netsh http add urlacl url=http://mymachinename:50333/ user=everyone
Teraz dostaję, że usługa 503 jest niedostępna błąd.
Zapora systemu Windows jest obecnie wyłączona i jestem w stanie przeglądać moją lokalną instancję IISExpress z adresem http://localhost:50333
Jaki jest ostatni element tej układanki konfiguracji?
źródło
http://mymachinename:50333/
z Twojego komputera?Odpowiedzi:
Wygląda na to, że brakuje Ci informacji o powiązaniu w pliku applicationhost.config.
Otwórz plik applicationhost.config. Możliwe lokalizacje to:
%userprofile%\Documents\IISExpress\config\applicationhost.config
$(solutionDir)\.vs\config\applicationhost.config
(VS2015)iisexpress.exe
aby się upewnić.Znajdź swój wpis na stronie internetowej i dodaj następujące powiązanie z nazwą swojego komputera.
Uruchom ponownie IIS Express
źródło
iisexpress.exe
uważnie dane wyjściowe, aby zobaczyć, którego pliku konfiguracyjnego używa.Była tylko jedna rzecz, która działała dla mnie.
używanie
*:portnumber:*
nie było dobre. Tak, po wykonaniu tej czynności i upewnieniu się, że Zapora systemu Windows jest otwarta, mogłem połączyć się z portem, ale nadal pojawia się błąd „503”.Przetestowałem kilka rzeczy lokalnie i odkryłem, że działa tylko http: // localhost . Używając rzeczywistego adresu IP (nie 127.0.0.1, ale na przykład 192.168.1.50), nadal zwracał 503 nawet na komputerze lokalnym. Próbowałem użyć prawdziwej nazwy hosta w powiązaniach, ale IIS Express odmówił uruchomienia. Może to mieć coś wspólnego ze sposobem rozwiązywania nazwy hosta. Nie zgłębiałem tego dalej.
Wreszcie skończyłem na tej konfiguracji:
W ten sposób mogłem połączyć się ze zdalnego komputera za pomocą
http://192.168.1.50:53351
.źródło
<binding protocol="https" bindingInformation="*:44300:*" />
<binding protocol="http" bindingInformation="*:8888:*" />
edit: naprawdę próbowałem zrozumieć obniżkę SO, wychodzę :).Po marnowaniu ponad 3 godzin na tak pełny temat postanowiłem podzielić się z Wami moją konfiguracją. Moja konfiguracja to Visual Express 2012 dla aktualizacji sieci Web 4 w systemie Windows 8. To był mój pierwszy powrót do MS VS od czasu studiów (co najmniej 8 lat) i teraz jestem pewien, że linux rządzi. W przypadku django taka konfiguracja zajęła mi 10 minut przeszukiwania dokumentacji.
wyłącz zaporę na czas testowania
konfiguracja powiązań w moim przypadku adres lokalny to localIP = 192.168.1.102 (ponieważ linki nie mogą zawierać domeny nieliczbowej, użyj go poniżej zamiast mylocaldomain.com, zobacz zasady stackoverflow) w
Documents\IISExpress\config\applicationhost.config
automatycznie dodaje autorun dla usługi uruchamiania ISS Express
Dodaj kilka dziwnych reguł do serwera http (wciąż nie wiem, czy jest to konieczne)
uruchom IISExpress ręcznie nie z VS IDE
http://mylocaldomain.com:53351
jeśli działa, możemy dodać regułę zaporydodaj regułę zapory ogniowej
ustaw remoteip na dowolny, jeśli chcesz uzyskać dostęp do serwera z zewnątrz, jeśli chcesz uzyskać dostęp do sieci lokalnej, skorzystaj z locals podsieci
uruchom zaporę ogniową
sprawdź ponownie, czy wszystko działa na lokalnym i publicznym IP
Życzę powodzenia
Rafał
źródło
netsh http delete urlacl url=http://*:55416/
(zamień port na swój port)localhost
. Okazało się, że gość (Windows) Nazwa maszyna musiała być w oprawach wapplicationhost.config
, a na komputerze (Mac) gość nazwa maszyna musiała być odwzorowane na127.0.0.1
w/etc/hosts
. Dopiero wtedy żądanie do maszyny gościa na hoście powiodło się.Stwierdzono, że problem związany był ze złym mapowaniem adresu URL. Aby to rozgryźć:
i poszukaj rzeczy takich jak
http://+:80/
lub port, z którym się wiążesz.Następnie użyj
To rozwiązało problem.
źródło
netsh http delete urlacl <yoururl>
Nic mi nie działało. Wreszcie znalazłem iisexpress-proxy
Zobacz moją odpowiedź https://stackoverflow.com/a/33623399/631527
Innym rozwiązaniem jest
ngrok
źródło
3028
. Pobiegłemiisexpress-proxy 3028 to 12345
i wtedy./ngrok.exe http 12345
. 😅Pomogło mi kliknięcie prawym przyciskiem myszy ikony „IISExpress” „Pokaż wszystkie aplikacje”. Następnie wybrałem stronę i zobaczyłem, z którego pliku aplicationhost.config korzysta, a poprawka poszła idealnie.
źródło
Problemem jest aktualizacja pliku applicationhost.config w folderze internetowym zamiast rozwiązania. Plik konfiguracji rozwiązania należy zmienić
źródło
Po rozwiązaniu @vikomall nie zapomnij uruchomić VS jako administrator. Napraw to dla mnie.
źródło
Odnośnie odpowiedzi Anthony'ego Rizzolo: w Windows 8.1 musiałem napisać w ten sposób:
Na przykład:
źródło
Żadna z powyższych odpowiedzi nie działała dla mnie.
Mam dwa wpisy w netsh dla tej samej usługi
netsh http show urlacl
Jeden używa silnej karty wieloznacznej, a drugi słabej karty wieloznacznej.
Usunięcie tej ze słabym znakiem wieloznacznym wykonało zadanie.
Więcej informacji o silnej i słabej karcie wieloznacznej w kontekście narzędzia netsh
https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings
źródło