Come posso abilitare le richieste remote in IIS Express? Scott Guthrie ha scritto che è possibile ma non ha detto come.
Come posso abilitare le richieste remote in IIS Express? Scott Guthrie ha scritto che è possibile ma non ha detto come.
Risposte:
Sul sito del team IIS è presente un post sul blog che spiega come abilitare le connessioni remote su IIS Express . Ecco la parte pertinente di quel post riassunto:
Su Vista e Win7, eseguire il comando seguente da un prompt amministrativo:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Per XP, installare prima gli strumenti di supporto di Windows XP Service Pack 2. Quindi eseguire il comando seguente da un prompt amministrativo:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
comando per consentire connessioni su qualsiasi nome host?
user={PARAM_USER}
sarà nella tua lingua.
user=todos
invece di user=everyone
.
Esistono tre modifiche che potresti dover apportare.
.config
file. Tipicamente:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Trova l'elemento di associazione del tuo sito e aggiungi
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
Dov'è everyone
un gruppo di windows. Usa le virgolette doppie per gruppi con spazi come "Tout le monde".
Consenti IIS Express tramite il firewall di Windows.
Start / Windows Firewall con sicurezza avanzata / Regole in entrata / Nuova regola ...
Programma
%ProgramFiles%\IIS Express\iisexpress.exe
OR Porta 8080 TCP
Ora quando inizi iisexpress.exe
dovresti vedere un messaggio come
URL registrato correttamente "http: // *: 8080 /" per l'applicazione "hello world" del sito "/"
users=everyone
per netsh
(secondo passaggio) può causare l'errore 1789. La soluzione consiste nel tradurre everyone
il nome del gruppo corrispondente nella propria lingua.
Project Url
, se inserisco un asterisco per il nome host, viene visualizzato un errore. Se inserisco qualcos'altro, prova a creare una nuova directory virtuale. Non si collega alla voce in application.config.
bindingInformation="*:8080:hostname"
e nel passaggio 2 url=http://hostname:8080/
e nelle proprietà del progetto Web di Visual Studio nella scheda Web impostare Project Url su http://hostname:8080/
. Elimina *
urlacl se ne hai già creato uno; non funzionerà se hai entrambi. Infine, l'URL a cui vai nel tuo browser web deve fare riferimento al nome host, non a localhost.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Ricordo di aver riscontrato gli stessi problemi mentre provavo questo flusso di lavoro qualche mese fa.
Ecco perché ho scritto una semplice utility proxy appositamente per questo tipo di scenario: https://github.com/icflorescu/iisexpress-proxy .
Utilizzando il proxy IIS Express , tutto diventa abbastanza semplice: non è necessario "netsh http add urlacl url = vaidesg: 8080 / user = Everyone" o fare confusione con il tuo "applicationhost.config".
Basta emetterlo nel prompt dei comandi:
iisexpress-proxy 8080 to 3000
... e quindi puoi puntare i tuoi dispositivi remoti su http: // vaidesg: 3000 .
Il più delle volte è più semplice È meglio.
Niente ha funzionato per me fino a quando non ho trovato iisexpress-proxy .
Apri il prompt dei comandi come amministratore, quindi esegui
npm install -g iisexpress-proxy
poi
iisexpress-proxy 51123 to 81
supponendo che il tuo progetto Visual Studio si apra su localhost: 51123 e desideri accedere all'indirizzo IP esterno xxxx: 81
Modifica: attualmente sto usando ngrok
Come sidenote a questo:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Funzionerà solo su versioni inglesi di Windows. Se si utilizza una versione localizzata, è necessario sostituire "tutti" con qualcos'altro, ad esempio:
Altrimenti verrà visualizzato un errore (Creazione SDDL non riuscita, errore: 1332)
Una buona risorsa è lavorare con SSL in fase di sviluppo è più semplice con IISExpress di Scott Hanselman.
Quello che stai cercando è la sezione Far funzionare IIS Express esternamente sulla porta 80
Se stai lavorando con Visual Studio, segui questi passaggi per accedere a IIS-Express su indirizzo IP:
ipconfig
nella riga di comando di WindowsVai a
$(SolutionDir)\.vs\config\applicationHost.config
Trova
<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>
Inserisci:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
con il tuo indirizzo IP
L'ho risolto con l'installazione di "Conveyor by Keyoti" in Visual Studio Professional 2015. Il trasportatore genera un indirizzo REMOTO (il tuo IP) con una porta (45455) che abilita la richiesta esterna. Esempio:
Conveyor ti consente di testare applicazioni web da tablet e telefoni esterni sulla tua rete o da emulatori Android (senza http://10.0.2.2:<hostport>
)
I passaggi sono nel seguente link:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Se hai provato la risposta del colonnello Panic ma non funziona in Visual Studio, prova questo:
Aggiungine un altro <binding />
nella tua configurazione di IIS Express
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Infine, devi eseguire Visual Studio come amministratore
Ciò che mi ha aiutato è stato fare clic con il pulsante destro del mouse sull'icona "IISExpress", "Mostra tutte le applicazioni". Quindi selezionando il sito Web e ho visto quale aplicationhost.config utilizza e la correzione è andata perfettamente.
Questo è quello che ho fatto per Windows 10 con Visual Studio 2015 per abilitare l'accesso remoto, sia con http che https:
Il primo passo è associare l'applicazione al tuo indirizzo IP interno. Esegui cmd
-> ipconfig
per ottenere l'indirizzo. Apri il file /{project folder}/.vs/config/applicationhost.config
e scorri verso il basso fino a trovare qualcosa del genere:
<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>
Aggiungi due nuove associazioni sotto bindings
. Puoi usare HTTPS anche se ti piace:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
Aggiungi la seguente regola al firewall, apri un nuovo cmd
prompt come amministratore ed esegui i seguenti comandi:
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
Ora avvia Visual Studio come Administrator
. Fare clic con il pulsante destro del mouse sul file di progetto dei progetti Web e selezionare Properties
. Vai alla Web
scheda e fai clic Create Virtual Directory
. Se Visual Studio non viene eseguito come amministratore, probabilmente non funzionerà. Ora tutto dovrebbe funzionare.
La risposta accettata a questa domanda è una guida per far funzionare IIS Express con webmatrix. Ho trovato questa guida più utile quando ho cercato di farlo funzionare con VS 2010.
Ho appena seguito i passaggi 3 e 4 (eseguendo IIS Express come amministratore) e ho dovuto disabilitare temporaneamente il mio firewall per farlo funzionare.
È possibile provare a configurare il port forwarding invece di modificare la configurazione di IIS Express, aggiungere nuove regole HTTP.sys o eseguire Visual Studio come amministratore.
Fondamentalmente è necessario inoltrare il IP:PORT
sito Web in esecuzione su un'altra porta libera sul computer ma sull'adattatore di rete esterno, non localhost.
Il fatto è che IIS Express (almeno su Windows 10) si lega al [::1]:port
significato in ascolto sulla porta IPv6. Devi tenerne conto.
Ecco come l'ho fatto funzionare - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Spero che sia d'aiuto.
Il modo più semplice e più bello che ho trovato è stato quello di usare (ci vogliono 2 minuti per l'installazione):
Funzionerà con qualsiasi cosa in esecuzione su localhost. Basta iscriversi, eseguire poco eseguibile e qualunque cosa tu esegua su localhost ottiene l'URL pubblico a cui puoi accedere da qualsiasi luogo.
Questo è utile per mostrare cose ai tuoi compagni di squadra remoti, senza problemi con la configurazione di IIS o i firewall. Vuoi interrompere l'accesso basta terminare eseguibile.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
supponendo che 89230 sia la porta IIS Express
Puoi anche eseguire più porte anche su un piano gratuito
Ho dei problemi con l'utilizzo di IIS Express in Win 8.1 e richieste esterne.
Seguo questi passaggi per eseguire il debug della richiesta esterna:
Sta funzionando!
Se esegui Visual Studio da Admin puoi aggiungere solo
<binding protocol="http" bindingInformation="*:8080:*" />
o
<binding protocol="https" bindingInformation="*:8443:*" />
in
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
e, inoltre, ho dovuto aprire la porta (8443) dell'applicazione nel firewall di Windows.
Avevo abilitato un IIS locale quindi ho appena creato una regola di riscrittura sulla mia porta di debug ... Penso che questo sia migliore e più freddo di altri metodi perché è più facile rimuoverlo una volta terminato lo sviluppo ... Ecco come appare la riscrittura. .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
VS ti consente anche di sviluppare utilizzando direttamente IIS locale (che quindi consente connessioni remote) ma a sua volta devi sempre eseguirlo come amministratore ... Non mi piace.
Ho risolto questo problema utilizzando l'approccio proxy inverso.
Ho installato il server wamp e ho usato la funzione proxy inverso semplice del server web apache.
Ho aggiunto una nuova porta per ascoltare il web server Apache (8081). Quindi ho aggiunto la configurazione proxy come virtualhost per quella porta.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
Ho fatto tutti questi passaggi e niente mi ha aiutato. E quello di cui ho bisogno, è solo per eseguire la mia app tramite IIS Express ...
Spero che sia d'aiuto.
Non sono stato in grado di soddisfare le richieste di IIS ad altri utenti nella mia rete locale, tutto quello che dovevo fare (oltre a quanto sopra) era riavviare il mio router BT Hub.
Questo è follemente fantastico e copre anche HTTPS con bei nomi di dominio:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
Le parti davvero fantastiche che non potrei trovare altrove su SO nel caso in cui il link sopra non scompaia mai:
> 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/
L'utilità di cui sopra registrerà il certificato SSL per te! Se usi l'opzione -UseSelfSigned, è semplicissimo.
Se vuoi fare le cose nel modo più duro, la parte non ovvia è che devi dire a HTTP.SYS quale certificato usare, come questo:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash è il "Thumbprint" che puoi ottenere dalle proprietà del certificato in MMC.
Ho fatto quanto segue e sono stato in grado di connettermi:
1) modificato l'associazione di configurazione IIS express dall'host locale a '*'
binding protocol = "http" bindingInformation = "*: 8888: *"
2) Definizione della regola in entrata sul firewall per consentire la porta specifica per il tipo di protocollo: tcp
3) Aggiungi il seguente comando per aggiungere la configurazione di rete per la tua porta: netsh http add urlacl url = http: // *: 8888 / user = Everyone
[finestra di dialogo delle proprietà del progetto]
Per lo sviluppo utilizzando VisualStudio 2017 e un progetto API NetCore:
1) In Cmd-Box: ipconfig / all per determinare l'indirizzo IP
2a) Immettere l'indirizzo IP recuperato in Proprietà progetto-> Scheda Debug
2b) Selezionare una porta e collegarla all'indirizzo IP dal passaggio 2a.
3) Aggiungi una regola di consenso nel firewall per consentire il traffico TCP in entrata sulla porta selezionata (il mio firewall si è attivato con una finestra di dialogo: "Blocca o aggiungi regola al firewall"). Aggiungi in tal caso farà il trucco.
Svantaggio della soluzione sopra:
1) Se si utilizza un indirizzo IP dinamico, è necessario ripetere i passaggi precedenti nel caso in cui sia stato assegnato un altro indirizzo IP.
2) Il tuo server ha ora una porta aperta che potresti dimenticare, ma questa porta aperta rimane un invito per ospiti indesiderati.