Jak mogę włączyć zdalne żądania w IIS Express? Scott Guthrie napisał, że to możliwe, ale nie powiedział jak.
Jak mogę włączyć zdalne żądania w IIS Express? Scott Guthrie napisał, że to możliwe, ale nie powiedział jak.
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:
W systemach Vista i Win7 uruchom następujące polecenie z monitu administracyjnego:
netsh http add urlacl url=http://vaidesg:8080/ user=everyoneW przypadku XP najpierw zainstaluj Narzędzia obsługi systemu Windows XP z dodatkiem Service Pack 2. Następnie uruchom następujące polecenie z monitu administracyjnego:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netshpolecenie zezwalające na połączenia z dowolną nazwą hosta?
user={PARAM_USER}będzie w twoim własnym języku.
user=todoszamiast user=everyone.
Istnieją trzy zmiany, których możesz potrzebować.
.configpliku Zazwyczaj:
$(solutionDir)\.vs\config\applicationhost.config%userprofile%\My Documents\IISExpress\config\applicationhost.configZnajdź element wiążący witryny i dodaj
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
Gdzie everyonejest 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.
Start / Zapora systemu Windows z zaawansowanymi zabezpieczeniami / Reguły ruchu przychodzącego / Nowa reguła ...
Program
%ProgramFiles%\IIS Express\iisexpress.exe
OR Port 8080 TCP
Teraz, kiedy zaczniesz iisexpress.exe, powinieneś zobaczyć komunikat taki jak
Pomyślnie zarejestrowano adres URL „http: // *: 8080 /” dla aplikacji „hello world” application „/”
users=everyonena netsh(drugi krok) może spowodować błąd 1789. Rozwiązanie to przełożyć everyonedo 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 2 url=http://hostname:8080/, a we właściwościach projektu internetowego Visual Studio na karcie WWW ustaw Adres URL projektu na http://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.
Nic nie działało dla mnie, dopóki nie znalazłem iisexpress-proxy .
Otwórz wiersz polecenia jako administrator, a następnie uruchom
npm install -g iisexpress-proxy
następnie
iisexpress-proxy 51123 to 81
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
Na marginesie tego:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
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)
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
Jeśli pracujesz z Visual Studio, wykonaj następujące kroki, aby uzyskać dostęp do IIS-Express przez adres IP:
ipconfigw wierszu polecenia systemu WindowsIść do
$(SolutionDir)\.vs\config\applicationHost.configOdnaleźć
<site name="WebApplication3" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:62549:localhost" />
</bindings>
</site>Dodaj: za
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
pomocą swojego adresu IP
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
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 Express
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Na koniec musisz uruchomić program Visual Studio jako administrator
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.
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->, ipconfigaby uzyskać adres. Otwórz plik /{project folder}/.vs/config/applicationhost.configi przewiń w dół, aż znajdziesz coś takiego:
<site name="Project.Web" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
</bindings>
</site>
Dodaj dwa nowe powiązania w obszarze bindings. Możesz także użyć HTTPS, jeśli chcesz:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
Dodaj następującą regułę do zapory, otwórz nowy cmdmonit jako administrator i uruchom następujące polecenia:
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow
netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow
Teraz uruchom Visual Studio as Administrator. Kliknij prawym przyciskiem myszy plik projektu WWW i wybierz Properties. Przejdź do Webzakładki i kliknij Create Virtual Directory. Jeśli program Visual Studio nie zostanie uruchomiony jako administrator, prawdopodobnie zakończy się niepowodzeniem. Teraz wszystko powinno działać.
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.
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:PORTswoją 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]:porttym, ż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.
Najprostszym i najfajniejszym sposobem, jaki znalazłem, było użycie (konfiguracja zajmuje 2 minuty):
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.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
zakładając, że 89230 jest twoim portem IIS Express
Możesz także uruchomić wiele portów, nawet w ramach bezpłatnego abonamentu
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!
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
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.configa 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. .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
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.
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.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
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.
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.
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ął:
> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
> setupFriendlyHostnameUrl -url:<url>
> deleteFriendlyHostnameUrl -url:<url>
> setupUrl -url:<url>
> deleteUrl -url:<url>
> setupSslUrl -url:<url> -CertHash:<value>
> setupSslUrl -url:<url> -UseSelfSigned
> deleteSslUrl -url:<url>
>
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/
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:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash to „odcisk palca”, który można uzyskać z właściwości certyfikatu w MMC.
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
[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.