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=everyone
W 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)
netsh
polecenie zezwalające na połączenia z dowolną nazwą hosta?
user={PARAM_USER}
będzie w twoim własnym języku.
user=todos
zamiast user=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
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
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.
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=everyone
na netsh
(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 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:
ipconfig
w wierszu polecenia systemu WindowsIść do
$(SolutionDir)\.vs\config\applicationHost.config
Odnaleźć
<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
->, ipconfig
aby uzyskać adres. Otwórz plik /{project folder}/.vs/config/applicationhost.config
i 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 cmd
monit 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 Web
zakł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: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.
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.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. .
<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.