Utilizzo di IIS Express per ospitare un sito Web (temporaneamente)

Ho un sito Web (MVC3), che per lo sviluppo è ospitato in IIS Express. (Ho incontrato un bug di Cassini Devserver e ho dovuto eseguire l’aggiornamento …) Ora, mi chiedo, è ansible lasciare che altre macchine sulla mia rete locale (dietro il router) vedano il sito come ospitato sulla mia macchina? (ad es. se scrivo http: //my.local.ip: porta in un browser sulla stessa LAN di quanto sto caricando la pagina?)

Per impostazione predefinita, IIS Express serve solo richieste localhost. Per servire richieste esterne, modifica il file applicationhost.config (che si trova in %userprofile%\documents\iisexpress\config\ ) e cambia localhost in '*' o il nome del tuo computer. (ricorda che per l’associazione non localhost devi essere in esecuzione come amministratore o impostare URL acl come amministratore e quindi eseguire iisexpress come non amministratore)

In alternativa, è ansible utilizzare qualcosa come AnalogMapp PortMapper per agire come un piccolo proxy di loopback per tunnelare le porte associate localhost in modo privato per aprire pubblicamente le porte.

Per esempio,

  • IISExpress è localmente associato a localhost: 8080
  • La porta 9090 di PortMapper è configurata per inoltrare il traffico a localhost: 8080

In effetti, qualsiasi connessione sulla porta 9090 (aperta da PortMapper ) verrà sottoposta a tunnel su localhost: 8080 ; bypassando così tutte le sciocchezze netsh che a volte possono essere un dolore.

Di seguito è la mia configurazione:

Configurazione di PortMapper

Il vantaggio dell’utilizzo di questo metodo di proxy è che non espone in modo permanente una porta IISExpress aperta sulla finestra di sviluppo locale.

Raramente, ci sono momentjs in cui voglio aprire il porto pubblicamente per le riunioni; ma la maggior parte delle volte, la porta dovrebbe essere chiusa e accessibile solo da localhost. Modificare le regole del firewall sul router ogni volta è un problema. Ecco come ho impostato le cose:

  • Il firewall del mio router inoltra la porta 9090 a PortMapper
  • PortMapper continua a trasmettere il traffico verso IISExpress (in ascolto su 8080 ) solo se PortMapper è in esecuzione.

Nota

Assicurati di chiudere tutte le windows di PortMapper affinché le modifiche abbiano effetto.

Nota 2

Come altri hanno descritto, potrebbe essere necessario regolare i bind di IISExpress per l’applicazione in

  My Documents\IISExpress\applicationhost.config project\.vs\config\applicationhost.config 

a qualcosa di simile:

       

Credo che ci siano tre passaggi per rendere questo successo:

1) Aggiungere una voce dns o voci di host in modo che altre macchine possano cercare l’indirizzo IP della macchina di sviluppo

2) Aggiungi un binding a applicationhost.config in% userprofile / documents / IISExpress / Config in questo modo

   ...    

3) Esegui il comando trovato qui per consentire le richieste in arrivo:

 netsh http add urlacl url=http://yourmachinendnsname:yourport#/ user=everyone 

La risposta in questo thread è ottima, lascia solo le eccezioni del firewall.

 netsh advfirewall firewall add rule name="IIS Express (non-SSL)" action=allow protocol=TCP dir=in localport=8000 netsh advfirewall firewall add rule name="IIS Express (SSL)" action=allow protocol=TCP dir=in localport=44300 

Sourced from comments @ http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx

Il trucco Custom Rule in Fiddler da http://blogs.microsoft.co.il/blogs/shair/archive/2008/12/15/how-to-use-fiddler-on-localhost.aspx ha funzionato per me alla fine.

Sì, è ansible configurare il numero di siti che utilizzano iis Express per l’utilizzo della LAN locale. Ecco il collegamento Accesso ai siti locali da Lan IIS Express che spiega come ottenere ciò.