Configurare IIS Express per l'accesso esterno al progetto VS2010


103

Sto sviluppando un progetto in VS2010 e posso visualizzare il mio sito localmente tramite IIS Express. Vorrei abilitare l'accesso esterno tramite la rete.

Tutte le mie ricerche mi hanno indirizzato a questo post del blog: http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx , che è utile ma lo fa non sembra mostrare come configurare i binding per un progetto avviato in visual studio (non riesco a trovare la schermata negli screenshot e ho modificato le informazioni sul binding in applicationhost.config, ma non sembra riflettersi quando eseguo il sito da studio visivo).


10
si prega di leggere il post sul blog di Scott Hanselman hanselman.com/blog/…
balexandre

Risposte:


136

1 Dopo aver modificato il file applicationhost.config (che si trova nella cartella IISExpress nei documenti), i collegamenti del sito dovrebbero apparire come di seguito:

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

Gli attacchi sono composti da tre parti. Innanzitutto un indirizzo IP o un elenco o, come in questo caso, un carattere jolly. In secondo luogo il numero di porta e in terzo luogo un nome host, o un elenco, o un carattere jolly (per il filtraggio per Hostintestazione). Per scopi di sviluppo, un carattere jolly è più adatto qui poiché probabilmente utilizzerai una porta univoca.

2 Poiché si utilizza un'associazione non localhost, sono necessarie autorizzazioni aggiuntive. È possibile eseguire VS come amministratore o, preferibilmente, aggiungere gli URL ACL per concedere le autorizzazioni richieste. Nell'esempio seguente il permesso è concesso a tutti, ma potresti usare il tuo nome utente.

Nota: il urlacldeve corrispondere esattamente all'associazione. Quindi un urlaclfor http://*:8080consentirà un binding di *:8080:*, ma non un binding di, *:8080:localhostanche se il secondo è un sottoinsieme del primo. questo significa che se, invece di usare un carattere jolly, elenchi le intestazioni host in applicationhost.config, devi aggiungere una corrispondenza urlaclper ciascuna.

I passaggi per la configurazione di HTTP.sys per il traffico esterno sono simili alla configurazione di un sito per utilizzare una porta riservata. In Windows 7 o Windows Vista, da un prompt dei comandi con privilegi elevati, esegui il comando seguente:

netsh http add urlacl url=http://*:8080/ user=DOMAIN\username

In Windows XP, esegui il seguente comando da un prompt dei comandi con privilegi elevati:

httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)

Nota 2 Se l'esecuzione di VS come amministratore o l'aggiunta di voci ACL non risolve il problema, eseguire IIS Express dalla riga di comando e verificare se sono presenti messaggi di errore di registrazione del binding. Per iniziare dalla riga di comando, dai questo comando:

iisexpress.exe /site:"your-site-name"

3 Infine avrai bisogno delle voci appropriate del firewall. Per questo è più semplice utilizzare la console "Windows Firewall con sicurezza avanzata".

In "Regole in entrata" scegli "Nuova regola ...".

  • Il tipo di regola è "Personalizzato".
  • Il programma è Servizi-> Personalizza ...-> Applica solo ai servizi. (Sebbene IIS Express non sia un servizio, il multiplexer HTTP che utilizza lo è).
  • Il protocollo è TCP
  • Porte specifiche: elenca tutte le porte per tutti i tuoi collegamenti IIS Express. Puoi tornare a questa regola e aggiungere porte in qualsiasi momento. (Se questo diventa noioso, potresti aggiungere un intervallo come quello 40000-65534che copre l'intero intervallo utilizzato da Visual Studio, ma tieni presente che questo è meno sicuro).
  • L'azione è "Consenti la connessione"
  • Il profilo sarà uno dei seguenti. In caso di dubbio, scegli "Dominio + privato".
    • "Dominio", se il tuo è un desktop aziendale e verrà eseguito solo sul dominio locale
    • "Dominio + privato" Se la vostra è una macchina di sviluppo privata in un ambiente non aziendale o un laptop aziendale che deve funzionare anche quando si lavora da casa.
    • "Dominio, privato e pubblico", se hai bisogno di fare dimostrazioni su reti non private.
  • Il nome dovrebbe essere qualcosa come "IIS Express Dev Server"

12
@ user578913 Quindi ho finalmente trovato il file applicationhost.config corretto aprendo la barra delle applicazioni IIS Express in esecuzione e facendo clic su di essa, quindi sul collegamento al file di configurazione. Ho impostato la porta a 1063 sulla seconda riga, poiché è stata impostata la prima riga. Ho eseguito la tua riga di comando e tutto sembrava a posto. Quando vado a nome-macchina o nome- macchina: 1063 da un'altra macchina sulla rete, non ricevo ancora nulla.
Snumpy

15
ok, poiché Visual Studio assegna una porta (diversa da 8080), Windows Firewall la bloccava. Dopo aver spento Windows Firewall (potrei probabilmente semplicemente aprire la porta, ma sono su una rete sicura) e aver utilizzato l'IP della mia macchina piuttosto che il nome della macchina, ha funzionato. Grazie.
Voterei

3
Sì, se Windows Firewall deve essere attivo, aggiungi esplicitamente la porta TCP 8080 (o quella che usi). In Windows 7, inizialmente ho provato ad assegnare la porta a "IIS Express Worker Process". Ma non ha funzionato. Ho dovuto usare l'opzione "Nuova regola" e consentire la porta 8080. Anche la scelta del profilo (Dominio, Privato, Pubblico) è importante.
Gautam Jain

2
Nota a se stessi: se si ottiene l'accesso negato, eseguire Visual Studio come amministratore .
nVentimiglia

3
A partire da VS2015, il percorso del file è C:\<Path\To\Solution>\.vs\config\applicationhost.config. (Grazie, @Talon)
snumpy

29

Ho passato ore anche su questo problema, cercando di navigare dal mio Xoom Android alla mia macchina di sviluppo win7, in modo da poter testare una nuova app web asp.net che ho creato. Tutto quello che ho fatto è stato cambiare applicationhost.config di IISExpress dall'utilizzo del PC HostName all'attuale indirizzo IP del PC, per il mio nuovo sito.

<binding protocol="http" bindingInformation="*:80:dev-Lee" />

per

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 

Una volta fatto questo e riavviato IISExpress ... sono stato in grado di navigare sul mio computer dev-Lee e vedere la mia app dal mio Xoom!


10
Tutto quello che ottengo con tutte queste soluzioni è un errore 400 - Bad Request. Eventuali suggerimenti?
Krumelur

2
@Krumelur, assicurati di modificare il file applicationhost.config corretto. quello nella cartella Documenti.
Codler

14

È possibile aggiungere più indirizzi di binding modificando applicationhost.config di IIS Express

<bindings>
   <binding protocol="http" bindingInformation="*:62217:localhost" />
   <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
   <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>

Ora possiamo accedere al sito web da lan utilizzando l'indirizzo IP.

Accesso ai siti locali da Lan utilizzando IIS Express


6

Visual Studio 2013 SP1 e versioni successive (2015) include l'impostazione "Applica le impostazioni del server a tutti gli utenti (memorizza nel file di progetto)". Questo è abilitato per impostazione predefinita. Quando è abilitato, Visual Studio avvia IIS Express con argomenti della riga di comando che lo fanno utilizzare un file di configurazione diverso. La posizione del file "applicationhost.config" si trova nella directory del progetto in ".vs \ config".


1
Sì, questo era il problema nel mio caso: ho provato a modificare un file errato. Come accade, puoi vedere dove si trova la configurazione per la tua app IIS Express facendo clic sull'icona nella barra delle applicazioni, elencando tutte le app e selezionando il tuo. Il percorso del file di configurazione verrà scritto di seguito. Il mio era in .vs \ config
evilkos

1
Sì, lo stesso per me. Grazie mille.
Vas


1

Se stai lavorando con Visual Studio, segui questi passaggi per accedere a IIS-Express su indirizzo IP:

  1. Ottieni il tuo indirizzo IP host: ipconfignella riga di comando di Windows
  2. Vai a $ (SolutionDir) .vs \ config \ applicationHost.config
  3. 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>
  4. Aggiungi: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    con il tuo indirizzo IP
  5. Esegui il tuo Visual Studio con i diritti di amministratore e tutto dovrebbe funzionare
  6. Forse cerca alcuni problemi con il firewall se provi a connetterti da remoto

L'indizio è che Visual Studio ha il proprio file applicationHost.config!


0

Ho avuto molti problemi a farlo funzionare da Visual Studio 2012, sono passato da errori 404 a errori 503. Alla fine quello che ha funzionato per me, è stato cancellare tutta la configurazione correlata nella configurazione di IIS Express ...

"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy

Quindi ho creato una nuova directory virtuale dalla pagina delle proprietà nel mio progetto web in VS ma prima di creare la directory virtuale ho cambiato il nome host in http: // myhost: 80 / quindi ho premuto il pulsante di creazione della directory virtuale. In precedenza avevo ricevuto errori che dicevano che il nome host doveva essere "localhost", ma questa volta non è stato così. E dopo, ha funzionato.

In breve, cancella prima la configurazione esistente e ricomincia.


-2

Se il tuo dominio esterno è "nome.mydyndns.com", devi scrivere:

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

Funziona su Windows 2003 Server e IIS 7.5 Express.


-3

Immagine dello schermo

nel pool di applicazioni su IIS impostare "Abilita applicazioni a 32 bit" su "true".


Non sono sicuro che questo stia effettivamente affrontando la domanda. Volevi postare questo su un'altra domanda?
ckittel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.