Jak mogę włączyć zdalne żądania w IIS Express? Scott Guthrie napisał, że to możliwe, ale nie powiedział jak.
c#
asp.net
iis-express
TedTel
źródło
źródło
Odpowiedzi:
Na stronie zespołu IIS znajduje się post na blogu wyjaśniający, jak włączyć zdalne połączenia w IIS Express . Oto istotna część tego postu podsumowana:
źródło
netsh
polecenie zezwalające na połączenia z dowolną nazwą hosta?user={PARAM_USER}
będzie w twoim własnym języku.user=todos
zamiastuser=everyone
.Istnieją trzy zmiany, których możesz potrzebować.
.config
pliku Zazwyczaj:$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Znajdź element wiążący witryny i dodaj
Gdzie
everyone
jest grupa okien. Użyj podwójnych cudzysłowów dla grup ze spacjami takimi jak „Tout le monde”.Zezwól IIS Express na zaporze systemu Windows.
Teraz, kiedy zaczniesz
iisexpress.exe
, powinieneś zobaczyć komunikat taki jakźródło
users=everyone
nanetsh
(drugi krok) może spowodować błąd 1789. Rozwiązanie to przełożyćeveryone
do odpowiedniej nazwy grupy w języku polskim.Project Url
, wprowadzę gwiazdkę dla nazwy hosta, spowoduje to błąd. Jeśli wprowadzę cokolwiek innego, spróbuje utworzyć nowy katalog wirtualny. Nie łączy się z wpisem w application.config.bindingInformation="*:8080:hostname"
i 2url=http://hostname:8080/
, a we właściwościach projektu internetowego Visual Studio na karcie WWW ustaw Adres URL projektu nahttp://hostname:8080/
. Usuń*
adres URL, jeśli już go utworzyłeś; to nie zadziała, jeśli masz oba. Wreszcie adres URL, pod którym się znajdujesz w przeglądarce internetowej, musi odnosić się do nazwy hosta, a nie localhost.<binding protocol="http" bindingInformation="*:8080:localhost" />
Pamiętam, że kilka miesięcy temu napotkałem te same problemy, próbując tego przepływu pracy.
Dlatego napisałem proste narzędzie proxy specjalnie dla tego rodzaju scenariusza: https://github.com/icflorescu/iisexpress-proxy .
Korzystanie z serwera proxy IIS Express wszystko staje się dość proste - nie trzeba „netsh http add urlacl url = vaidesg: 8080 / user = wszyscy” lub zepsuć się z „applicationhost.config”.
Po prostu wydaj to w wierszu polecenia:
iisexpress-proxy 8080 to 3000
… A następnie możesz skierować urządzenia zdalne na http: // vaidesg: 3000 .
W większości przypadków prostsze jest lepsze.
źródło
Nic nie działało dla mnie, dopóki nie znalazłem iisexpress-proxy .
Otwórz wiersz polecenia jako administrator, a następnie uruchom
następnie
zakładając, że projekt Visual Studio otwiera się na localhost: 51123 i chcesz uzyskać dostęp do zewnętrznego adresu IP xxxx: 81
Edycja: Aktualnie używam
ngrok
źródło
Na marginesie tego:
Działa to tylko w angielskich wersjach systemu Windows. Jeśli korzystasz ze zlokalizowanej wersji, musisz zastąpić słowo „wszyscy” czymś innym, na przykład:
W przeciwnym razie pojawi się błąd (błąd utworzenia SDDL nie powiódł się, błąd: 1332)
źródło
Dobrym źródłem jest praca z SSL w czasie programowania jest łatwiejsza dzięki IISExpress Scott Hanselman.
To, czego szukasz, to sekcja Uzyskiwanie usług IIS Express do obsługi zewnętrznej przez port 80
źródło
Jeśli pracujesz z Visual Studio, wykonaj następujące kroki, aby uzyskać dostęp do IIS-Express przez adres IP:
ipconfig
w wierszu polecenia systemu WindowsIść do
Odnaleźć
Dodaj: za
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
pomocą swojego adresu IP
źródło
Rozwiązałem to dzięki instalacji „Conveyor by Keyoti” w Visual Studio Professional 2015. Conveyor generuje adres REMOTE (twoje IP) z portem (45455), który umożliwia żądanie zewnętrzne. Przykład:
Conveyor pozwala testować aplikacje internetowe z zewnętrznych tabletów i telefonów w sieci lub z emulatorów Androida (bez
http://10.0.2.2:<hostport>
)Kroki znajdują się w następującym linku:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
źródło
Jeśli próbowałeś odpowiedzi pułkownika Paniki ale nie działa w Visual Studio, spróbuj tego:
Dołącz inną
<binding />
w konfiguracji IIS ExpressNa koniec musisz uruchomić program Visual Studio jako administrator
źródło
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
Oto, co zrobiłem dla systemu Windows 10 z Visual Studio 2015, aby umożliwić dostęp zdalny, zarówno za pomocą http, jak i https:
Pierwszym krokiem jest powiązanie aplikacji z wewnętrznym adresem IP. Uruchom
cmd
->,ipconfig
aby uzyskać adres. Otwórz plik/{project folder}/.vs/config/applicationhost.config
i przewiń w dół, aż znajdziesz coś takiego:Dodaj dwa nowe powiązania w obszarze
bindings
. Możesz także użyć HTTPS, jeśli chcesz:Dodaj następującą regułę do zapory, otwórz nowy
cmd
monit jako administrator i uruchom następujące polecenia:Teraz uruchom Visual Studio as
Administrator
. Kliknij prawym przyciskiem myszy plik projektu WWW i wybierzProperties
. Przejdź doWeb
zakładki i kliknijCreate Virtual Directory
. Jeśli program Visual Studio nie zostanie uruchomiony jako administrator, prawdopodobnie zakończy się niepowodzeniem. Teraz wszystko powinno działać.źródło
Przyjęta odpowiedź na to pytanie stanowi przewodnik umożliwiający IIS Express pracę z webmatrix. Uważam ten przewodnik za bardziej przydatny, gdy próbuję go uruchomić z VS 2010.
Właśnie wykonałem kroki 3 i 4 (uruchamianie IIS Express jako administrator) i musiałem tymczasowo wyłączyć zaporę, aby działała.
źródło
Możesz spróbować skonfigurować przekierowanie portów zamiast modyfikować konfigurację IIS Express, dodawać nowe reguły HTTP.sys lub uruchamiać Visual Studio jako administrator.
Zasadniczo musisz przekierować
IP:PORT
swoją stronę internetową do innego wolnego portu na twoim komputerze, ale na zewnętrznej karcie sieciowej, a nie localhost.Chodzi o to, że IIS Express (przynajmniej w systemie Windows 10) wiąże się z
[::1]:port
tym, że nasłuchuje na porcie IPv6. Musisz wziąć to pod uwagę.Oto jak sprawiłem, że to działa - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Mam nadzieję, że to pomoże.
źródło
Najprostszym i najfajniejszym sposobem, jaki znalazłem, było użycie (konfiguracja zajmuje 2 minuty):
https://ngrok.com/
Będzie działał z każdym działającym na localhost. Po prostu zarejestruj się, uruchom trochę kalkulatora, a cokolwiek uruchomisz na localhost, otrzyma publiczny adres URL, do którego możesz uzyskać dostęp z dowolnego miejsca.
Jest to dobre do pokazywania rzeczy swoim zdalnym kolegom z zespołu, bez zbędnego konfigurowania usług IIS lub zapór ogniowych. Chcesz zatrzymać dostęp, po prostu zakończ plik wykonywalny.
zakładając, że 89230 jest twoim portem IIS Express
Możesz także uruchomić wiele portów, nawet w ramach bezpłatnego abonamentu
źródło
Mam problemy z używaniem IIS Express w Win 8.1 i zewnętrznym żądaniu.
Wykonuję następujące kroki, aby debugować żądanie zewnętrzne:
To działa!
źródło
Jeśli uruchamiasz Visual Studio z poziomu administratora, możesz po prostu dodać
<binding protocol="http" bindingInformation="*:8080:*" />
lub
<binding protocol="https" bindingInformation="*:8443:*" />
w
źródło
$(SolutionDir).vs\config\applicationHost.config
a także musiałem otworzyć port (8443) aplikacji w zaporze systemu Windows.Miałem włączone lokalne IIS, więc właśnie utworzyłem regułę przepisywania do mojego portu debugowania ... Myślę, że jest to lepsze i fajniejsze niż inna metoda, ponieważ łatwiej jest je usunąć po zakończeniu programowania ... Oto jak wygląda przepisywanie. .
VS pozwala także na tworzenie bezpośrednio przy użyciu lokalnego IIS (który następnie pozwala na zdalne połączenia), ale z kolei zawsze musisz uruchomić go jako administrator ... Nie podoba mi się to.
źródło
Rozwiązałem ten problem, stosując podejście odwrotnego proxy.
Zainstalowałem serwer Wamp i korzystałem z prostej funkcji odwrotnego proxy serwera WWW Apache.
Dodałem nowy port do słuchania serwera WWW Apache (8081). Następnie dodałem konfigurację proxy jako virtualhost dla tego portu.
źródło
Zrobiłem wszystkie te kroki i nic mi nie pomogło. A to, czego potrzebuję, to po prostu uruchomić moją aplikację za pośrednictwem IIS Express ...
Mam nadzieję, że to pomoże.
źródło
Nie mogłem obsługiwać żądań iis do innych użytkowników w mojej sieci lokalnej, jedyne co musiałem zrobić (oprócz powyższego), to zrestartować router BT Hub.
źródło
Jest to niesamowicie niesamowite, a nawet obejmuje HTTPS z ładnymi nazwami domen:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
Naprawdę niesamowite części, których nie mogłem znaleźć nigdzie indziej na SO, na wypadek gdyby powyższy link zniknął:
Powyższe narzędzie zarejestruje dla Ciebie certyfikat SSL! Jeśli użyjesz opcji -UseSelfSigned, jest to bardzo łatwe.
Jeśli chcesz robić rzeczy trudniej, nieoczywistą częścią jest to, że musisz powiedzieć HTTP.SYS, jakiego certyfikatu użyć, na przykład:
Certhash to „odcisk palca”, który można uzyskać z właściwości certyfikatu w MMC.
źródło
Wykonałem następujące czynności i udało mi się połączyć:
1) zmieniono powiązanie ekspresowej konfiguracji usług IIS z hosta lokalnego na „*”
protokół wiązania = „http” bindInformation = „*: 8888: *”
2) Zdefiniowana reguła ruchu przychodzącego w zaporze ogniowej, aby umożliwić określony port dla typu protokołu: tcp
3) Dodaj następującą komendę, aby dodać konfigurację sieci dla swojego portu: netsh http add urlacl url = http: // *: 8888 / user = wszyscy
źródło
Innym sposobem na uzyskanie dostępu do zewnętrznych żądań jest użycie IIS zamiast IIS Express. W moim studiu wizualnym mogę łatwo się przełączać.
źródło
[okno właściwości projektu]
Do programowania przy użyciu VisualStudio 2017 i projektu interfejsu API NetCore:
1) W Cmd-Box: ipconfig / all, aby określić adres IP
2a) Wprowadź pobrany adres IP we właściwościach projektu-> Karta debugowania
2b) Wybierz port i dołącz go do adresu IP z kroku 2a.
3) Dodaj regułę zezwalania w zaporze, aby zezwolić na ruch przychodzący TCP na wybrany port (moja zapora uruchomiła się z oknem dialogowym: „Blokuj lub dodaj regułę do zapory”). Add zrobi w takim przypadku lewę.
Wada powyższego rozwiązania:
1) Jeśli używasz dynamicznego adresu IP, musisz powtórzyć powyższe kroki, na wypadek gdyby przypisano inny adres IP.
2) Twój serwer ma teraz otwarty port, o którym możesz zapomnieć, ale ten otwarty port pozostaje zaproszeniem dla niepożądanych gości.
źródło