Utilizzo di domini personalizzati con IIS Express


304

Tradizionalmente utilizzo domini personalizzati con il mio server di sviluppo localhost. Qualcosa sulla falsariga di:

dev.example.com
dev.api.example.com

Questo mi ha fornito molta flessibilità quando lavoro con API esterne come Facebook. In passato ha funzionato benissimo con il server di sviluppo di Visual Studio integrato, perché tutto quello che dovevo fare era aggiungere un CNAME a quei record DNS che puntavano a127.0.0.1 .

Tuttavia, non sono stato in grado di farlo funzionare con IIS Express. Tutto quello che ho provato sembra aver fallito. Ho anche aggiunto la corretta configurazione XML al applicationHost.configfile per IIS Express, ma non sembra riconoscere le voci valide come una vera installazione di IIS.

<binding protocol="http" bindingInformation="*:1288:dev.example.com" />

Ogni volta che inserisco questa riga e provo a richiedere http://dev.example.com:1288ricevo il seguente messaggio:

Richiesta sbagliata (hostname non valido

Qualcuno sa se mi manca qualcosa di ovvio? O il team IIS Express non ha davvero la lungimiranza di vedere questo tipo di utilizzo?


Assicurarsi di avere l'attributo applicationPool del nodo dell'applicazione impostato su "Clr2IntegratedAppPool" o "Clr4IntegratedAppPool". Ho riscontrato l'errore Bad Hostname che vedi quando usi "Clr2ClassicAppPool" o "Clr4ClassicAppPool".
Neil Monroe,

confuso: i record CNAME non accettano indirizzi IP ma altri nomi host. Intendevi un disco?
Scott Coates

1
Ho avuto molti problemi con questo e ho trovato molto più semplice usare IIS invece di IIS Express
user0b101010

Mi sono appena imbattuto anche in questo. Speravo che guardasse solo il numero di porta e ignorasse il dominio. Non molta fortuna. Vorrei poter abilitare "accetta tutto" sul porto ....
Brady Moritz,

Vota adesso! Ho aggiunto un suggerimento UserVoice: visualstudio.uservoice.com/forums/121579-visual-studio/…
Luke Puplett

Risposte:


367

Questo è ciò che ha funzionato per me (aggiornato per VS 2013, vedere la cronologia delle revisioni per il 2010, per VS 2015 vedere questo: https://stackoverflow.com/a/32744234/218971 ):

  1. Fare clic con il tasto destro del mouse sul progetto di applicazione Web ▶ PropertiesWeb, quindi configurare la Serverssezione come segue:
    • Seleziona IIS Express ▼dal menu a discesa
    • URL del progetto: http://localhost
    • Sostituisci URL radice applicazione: http://dev.example.com
    • Fai clic su Create Virtual Directory(se visualizzi un errore qui potrebbe essere necessario disabilitare IIS 5/6/7/8, cambiare IIS Default Sitein qualsiasi cosa tranne la porta :80, assicurati che Skype non stia utilizzando la porta 80 , ecc.)
  2. Facoltativamente: impostare Start URLsuhttp://dev.example.com
  3. Apri %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config(Windows XP, Vista e 7) e modifica la definizione del sito nel <sites>blocco di configurazione in modo che sia simile alla seguente:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation=":80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>
    
  4. Se si esegue MVC: assicurarsi che applicationPoolsia impostato su una delle opzioni "Integrate" (come "Clr2IntegratedAppPool").

  5. Apri il tuo hostsfile e aggiungi la linea 127.0.0.1 dev.example.com.
  6. ► Start la tua applicazione!

Alcuni ottimi consigli dai commenti:

  • Potrebbe essere necessario eseguire Visual Studio come amministratore.
  • Se vuoi far sì che altri sviluppatori vedano il tuo IIS in esecuzione netsh http add urlacl url=http://dev.example.com:80/ user=everyone
  • Se si desidera che il sito venga risolto per tutti gli host impostati bindingInformation="*:80:". Usa qualsiasi porta tu voglia, 80 è semplicemente conveniente.

12
Questo è esattamente quello che ho fatto, stavo per scriverlo, ma mi hai battuto sul pugno :-) Come nota a margine, se vuoi lasciare che altri sviluppatori vedano il tuo IIS, potresti voler fare qualcosa come "netsh http add urlacl url = dev.example.com:80 utente = tutti "
EBarr,

6
Inoltre, se si desidera che il sito si risolva per tutti gli host, è possibile utilizzare: bindingInformation = "*: 80:" Uso questo in modo che localtunnel.com funzioni.
Lance Fisher,

17
Stavo ricevendo un errore di accesso negato. L'esecuzione di VS 2012 come amministratore l'ha risolto.
xanadont,

3
quale versione di IIS Express è questa? Sto eseguendo VS2012 (che credo sia IIS Express 8.0) e quando faccio clic sul pulsante di opzione "Usa server IIS locale" nell'area "Server" della pagina delle proprietà del Web, fai clic sulla casella di controllo Usa IIS Express e quindi prova per inserire " mydev.example.com ", quindi premere il pulsante "Crea directory virtuale", viene visualizzato l'errore "Impossibile creare la directory virtuale. Impossibile creare il sito Web mydev.example.com". È necessario specificare "localhost" per il nome del server.
Michael McCarthy,

12
Questo è complicato. È necessario modificare le convulsioni in diversi luoghi. È facile fare un vero casino. Non c'è davvero un modo più semplice?
Anderson,

151

Per Visual Studio 2015 si applicano i passaggi nelle risposte precedenti ma il applicationhost.configfile si trova in una nuova posizione. Nella cartella "soluzione" segui il percorso, questo è confuso se hai effettuato l'aggiornamento e avresti DUE versioni applicationhost.configsul tuo computer.

\.vs\config

All'interno di quella cartella vedrai il tuo file applicationhost.config

In alternativa, puoi semplicemente cercare nella cartella della soluzione il file .config e trovarlo in questo modo.

Ho usato personalmente la seguente configurazione:

inserisci qui la descrizione dell'immagine

Con quanto segue nel mio file hosts:

127.0.0.1       jam.net
127.0.0.1       www.jam.net

E quanto segue nel mio file applicationhost.config:

<site name="JBN.Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Dev\Jam\shoppingcart\src\Web\JBN.Site" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:49707:" />
            <binding protocol="http" bindingInformation="*:49707:localhost" /> 
    </bindings>
</site>

Ricorda di eseguire la tua istanza di Visual Studio 2015 come amministratore! Se non vuoi farlo ogni volta che raccomando questo:

Come eseguire Visual Studio come amministratore per impostazione predefinita

Spero che questo aiuti qualcuno, ho avuto problemi durante il tentativo di aggiornare a Visual Studio 2015 e ho capito che nessuna delle mie configurazioni veniva trasferita.


9
La parte cruciale è aggiungere la seconda *:49707:associazione invece di sostituire quella predefinita *:49707:localhostcome suggerito in molte altre risposte. E devi eseguire VS come amministratore, anzi (sic!). Grazie.
fracz,

3
È inoltre possibile utilizzare un URL come http://jam.127.0.0.1.xip.io/se non si desidera modificare il file hosts. Inoltre, tutti i collaboratori non dovranno modificare il proprio. Vedere xip.io .
Zack Martin,

1
Penso che valga la pena notare che la cartella ".vs" è nascosta e dovrebbe essere resa visibile all'inizio
Deluso il

3
Ho confermato che funziona anche in Visual Studio 2017. È interessante notare che non avevo bisogno di entrambi gli elementi <binding> (solo il primo senza "localhost"). Visual Studio, tuttavia, deve certamente funzionare come amministratore, il che è un po 'fastidioso
Loren Paulsen,

1
Vorrei solo che ci fosse un modo per quelli di noi a cui non è permesso eseguire nulla a livello amministrativo per farlo. I datori di lavoro / i clienti che vietano completamente il privilegio di amministratore senza pensare a come potrebbero abilitarli in modo sicuro sono incredibilmente miopi.
Steve Pettifer,

44

Quando si utilizza Visual Studio 2012 con IIS Express, la modifica di un'associazione esistente non funziona in modo permanente. (Potrebbe funzionare fino a quando non chiuderai VS, ma dopo ciò, le cose saranno davvero incasinate.)

La chiave è mantenere l'associazione localhost esistente e aggiungere una nuova associazione dopo di essa.

A meno che tu non stia eseguendo come amministratore, dovrai anche eseguire netsh add urlacl(per concederti le autorizzazioni per eseguire un sito non localhost come utente standard).

Se si desidera consentire qualsiasi nome host, il processo completo è il seguente:

  1. Crea la tua applicazione web e scopri quale porta sta usando (vedi proprietà del progetto, scheda Web, URL del progetto).
  2. Da un amministratore pronta, eseguire i seguenti comandi (sostituendo numeroporta con il numero di porta è capito a # 1):

    netsh http add urlacl url="http://*:portnumber/" user=everyone
    netsh http add urlacl url="http://localhost:portnumber/" user=everyone
    

Puoi anche usare il tuo nome utente (DOMINIO \ UTENTE) invece di tutti per una migliore sicurezza.

  1. Apri applicationhost.config (di solito in Documenti \ IIS Express \ config) e trova l'elemento con il tuo numero di porta.
  2. Aggiungi un altro binding con il nome host desiderato (in questo caso, *). Per esempio:

    <site name="MvcApplication1" id="2">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\sites\MvcApplication1" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:12853:localhost" />
            <binding protocol="http" bindingInformation="*:12853:*" />
        </bindings>
    </site>
    

Nota che, se vuoi aprire tutti i nomi host (*), avrai bisogno di due comandi netsh (uno per * e uno per localhost). Se si desidera solo aprire un nome host specifico, non è strettamente necessario il secondo comando netsh (localhost); è sufficiente solo quello con il tuo nome host specifico.


Ha fatto lo stesso (primo approccio), navigando su mycustomhost: myportnr ottengo "Servizio non disponibile". VS2012. Non riesco a provare la seconda poiché non esiste IIS Express in "I miei documenti" e applicationhost.config che ho trovato in c: \ Programmi \ IIS Express non aveva alcuna configurazione per la mia applicazione web ...
firepol,

2
Con VS2013, trovo che questa configurazione funzioni solo se poi eseguo come amministratore! (In esecuzione come non amministratore, IIS Express sembra ignorare la seconda associazione - se apro la sua interfaccia utente dall'icona di notifica, IIS mostra il mio sito come in esecuzione, ma mostra solo la prima associazione e posso usare solo localhost ... Se Sto funzionando come amministratore, mostra entrambi i binding nell'interfaccia utente ed entrambi funzionano.) Ho aggiunto gli urlacls con netsh, ma questo sembra non fare alcuna differenza - IIS Express sembra non provare nemmeno a legare niente diverso da localhost se non è elevato.
Ian Griffiths,

Aggiungendo un record con il *"Servizio non disponibile" risolto per me.
Jerone,

Che dire di uno scenario che è necessario utilizzare HTTPS sulla porta 443?
Kixoka,

@Kixoka Sto cercando di eseguire HTTPS. Sono riuscito a farlo funzionare ma il browser si lamenta che il certificato non corrisponde al dominio. Lo supero, ma non riesco a caricare tutte le risorse, quindi nessuna immagine, script o CSS.
Prime By Design,

24

Il nome host non valido indica che il sito effettivo configurato nel file di configurazione IIS Express (molto probabilmente) non è in esecuzione. IIS Express non ha un modello di processo come IIS.


Affinché il tuo sito possa funzionare, dovrebbe essere avviato in modo esplicito (aprendo e accedendo da webmatrix o dalla riga di comando chiamando iisexpress.exe (dalla sua directory di installazione) con il parametro / site.


In generale, i passaggi per consentire l'utilizzo di nomi DNS completi per l'accesso locale sono Usiamo il tuo esempio di nome DNS dev.example.com

  1. modifica il file% windows% \ system32 \ drivers \ etc \ hosts per mappare dev.example.com a 127.0.0.1 (privilegio di amministratore richiesto). Se controlli il server DNS (come nel caso di Nick), la voce DNS è sufficiente poiché questo passaggio non è necessario.
  2. Se accedi a Internet tramite proxy, assicurati che dev.example.com non venga escluso dal proxy (devi inserire nell'elenco delle eccezioni nel tuo browser (per IE sarebbe Strumenti / Opzioni Internet / Connessioni / Impostazioni Lan, quindi vai su Proxy Server / Advanced e inserisci dev.example.com nell'elenco di eccezioni.
  3. Configurare l'associazione IIS Express per il tuo sito (ad esempio: Sito1) per includere dev.example.com. Sarà necessario il privilegio di amministratore per utilizzare l'associazione. In alternativa, è possibile effettuare una prenotazione URL una tantum con http.sys utilizzando

    netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>

  4. avviare iisexpress /site:Site1o aprire Site1 in WebMatrix


2
Ciao Jaro, grazie per l'aiuto, ma 127.0.0.1 è impostato nel mio DNS non nel file hosts in modo che tutti gli sviluppatori abbiano lo stesso accesso. In secondo luogo non riesco a farlo avviare il debug in VS, a meno che l'associazione non sia impostata su "*: 1234: localhost" che è un'impostazione totalmente inutile, perché è associata a tutti gli indirizzi IP sulla mia macchina ma accetta solo le intestazioni host di "localhost ". Perché non hanno semplicemente fatto "127.0.0.1:1234:" ed hanno evitato tutte queste stronzate. Le intestazioni host non sono necessarie finché l'IP e la porta si risolvono. E correre come Admin è solo un enorme dolore nel culo per una grande squadra. Che disastro IIS Express è.
Nick Berardi,

1
Inoltre, solo come riferimento Bad Request - Invalid Hostnamesignifica che il nome host che sto cercando di utilizzare non può essere risolto perché il team IIS Express, nella sua infinita saggezza, ha deciso di chiamare "localhost" come l'unica intestazione host che avrebbe funzionato. E VS non ti permetterà di eseguirlo diversamente da "*: 1234: localhost"
Nick Berardi,

2
Ti ascolto sul problema 127.0.0.1. Il "localhost" nell'associazione è sicuramente una seccatura poiché non include il traffico per 127.0.0.1 . Il design è limitato dal contratto odierno di http.sys (gestore del protocollo http) che riconosce "localhost" solo per uso non amministrativo. L'unico requisito di amministratore può essere mitigato dalla prenotazione URL singola con http.sys (aggiornerà le informazioni di cui sopra). Per favore fatemi sapere che uso esatto con Visual Studio (è VS2010 con SP1 Beta?). Proviamo a lavorarci ancora un po 'e (speriamo) a risolvere il problema.
Jaro Dunajsky,

nota - se vedi l'errore netsh.exe 87 il parametro non è corretto - potrebbe essere perché hai omesso un percorso URI (/) dopo il tuo nome host.
Tim Lovell-Smith,

19

Sulla mia installazione di IIS Express WebMatrix, la modifica da "*:80:localhost"a "*:80:custom.hostname"non ha funzionato ("Nome host errato", anche con mappature etc \ hosts appropriate), ma "*:80:" ha funzionato - e senza i passaggi aggiuntivi richiesti dalle altre risposte qui. Nota che "*:80:*"non lo farà; lasciare il secondo asterisco.


3
uuuum, quindi ha "*:80:*"funzionato per me, ma poi ho riavviato il mio computer e improvvisamente non avrebbe funzionato fino a quando non l'ho cambiato "*:80:"e tutto andava bene! Grazie.
CW

2
Finalmente!! Ho anche seguito tutti i passaggi altrove e rimuovendo il * alla fine lo ha fatto funzionare, grazie!
Charles Philip,

Proprio qui per dire che ha funzionato per me. Ho provato la risposta accettata e ho ripristinato tutte le modifiche a ciò che hai detto e tutto funziona alla grande. Sto usando VS2013 Update4.
JasonWilczak,

Questo sembra funzionare perfettamente. Quando si utilizza VS2017, non sono sicuro di cosa posizionare nell'URL del progetto per farlo scrivere nel file applicationhost.config? È possibile impostare tramite VS IDE?
Jim,

8

Stavo cercando di integrare l'indirizzo IP pubblico nel mio flusso di lavoro e queste risposte non mi hanno aiutato (mi piace usare l'IDE come IDE). Ma quanto sopra mi porta alla soluzione (dopo circa 2 ore di battitura della testa contro un muro per integrarlo con Visual Studio 2012 / Windows 8) ecco cosa ha funzionato per me.

applicationhost.config generato da VisualStudio inC:\Users\usr\Documents\IISExpress\config

    <site name="MySite" id="1">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Users\usr\Documents\Visual Studio 2012\Projects\MySite" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:8081:localhost" />
            <binding protocol="http" bindingInformation="*:8082:localhost" />
            <binding protocol="http" bindingInformation="*:8083:192.168.2.102" />
        </bindings>
    </site>
  • Impostare IISExpress per l'esecuzione in Administratormodo che possa essere associato a indirizzi esterni (non host locale)
  • Esegui Visual Stuio in Administratormodo che possa avviare il processo come amministratore consentendo l' esecuzione dell'associazione .

Il risultato netto è che puoi navigare 192.168.2.102nel mio caso e testare (ad esempio in un emulatore Android. Spero davvero che questo aiuti qualcun altro in quanto questo è stato sicuramente un processo irritante per me.

Apparentemente è una funzionalità di sicurezza che mi piacerebbe vedere disabilitata.


8

Come Jessa Flint sopra , non volevo modificare manualmente .vs \ config \ applicationhost.config perché volevo che le modifiche persistessero nel controllo del codice sorgente. Inoltre non volevo avere un file batch separato. Sto usando VS 2015 .

Proprietà progetto → Crea eventi → Riga comandi evento pre-build: Schermata delle proprietà del progetto


::The following configures IIS Express to bind to any address at the specified port

::remove binding if it already exists
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /-bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

::add the binding
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /+bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

Assicurati solo di modificare il numero di porta sulla porta desiderata.


Un'aggiunta minore qui. Assicurati di creare regole per aprire quella porta nel tuo Windows Firewall. Quindi ha funzionato come un fascino!
Peter M,

Mi piace la tua risposta perché la modifica di .vs \ config \ applicationhost.config non è fattibile quando più sviluppatori eseguono IIS Express sui propri computer. Grazie!
Colin

6

La risposta votata è valida .. e questa informazione mi ha aiutato parecchio. So che questo argomento è stato discusso in precedenza, ma volevo aggiungere qualche input aggiuntivo. La gente dice che è necessario "modificare manualmente" il file application.config nella directory IISExpress / Config degli utenti. Questo è stato un grosso problema per me perché volevo distribuire la configurazione tramite il controllo del codice sorgente a vari sviluppatori.

Quello che ho scoperto è che puoi automatizzare l'aggiornamento di questo file usando il programma "C: \ Programmi \ IIS Express \ appcmd.exe". Ci è voluto un po 'per scoprire i parametri di controllo, ma condividerò qui i miei risultati. In sostanza, è possibile creare un file .bat che esegue sia il comando NETSH che l'APPCMD.EXE (e magari sostituire un file host se lo si desidera) per semplificare la configurazione dell'intestazione dell'host con IIS Express.

Il tuo file bat di installazione sarebbe simile al seguente:

netsh http add urlacl url=http://yourcustomdomain.com:80/ user=everyone 

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /+bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

Creerò anche un file bat "Disinstalla" che pulirà questi collegamenti ... (perché spesso mi limito a falsificare DNS in modo da poter lavorare su codice sensibile al nome host)

netsh http delete urlacl url=http://yourcustomdomain.com:80/

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /-bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

Spero che queste informazioni siano utili a qualcuno .. Mi ci è voluto un po 'per scoprire.


4

Seguendo il consiglio di Jaro, sono stato in grado di farlo funzionare su Windows XP e IIS Express (installato tramite Web Matrix) con una piccola modifica e non si è limitato al solo localhost. Si tratta solo di impostare correttamente gli attacchi.

  1. Utilizzare WebMatrix per creare un nuovo sito dalla cartella nella radice dell'applicazione Web.
  2. Chiudi WebMatrix.
  3. Apri %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (Windows XP. I percorsi Vista e 7 saranno simili) e modifica la definizione del sito nel <sites>blocco di configurazione in modo che sia simile alla seguente:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation="*:80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>

Se si esegue MVC, mantenere ApplicationPool impostato su una delle opzioni "Integrate".


3

La soluzione di David è buona. Ma ho trovato che <script>alert(document.domain);</script>nella pagina avvisa ancora "localhost" perché l'URL del progetto è ancora localhost anche se è stato sostituito http://dev.example.com. Un altro problema che ho riscontrato è che mi avvisa che la porta 80 è già stata in uso anche se ho disabilitato Skype usando il numero di porta 80 come raccomandato da David Murdoch. Quindi ho capito un'altra soluzione che è molto più semplice:

  1. Esegui Blocco note come amministratore e apri gli host C: \ Windows \ System32 \ drivers \ etc \, aggiungi 127.0.0.1 miodominio e salva il file;
  2. Apri il progetto Web con Visual Studio 2013 (Nota: deve essere eseguito anche come amministratore), fai clic con il pulsante destro del mouse sul progetto -> Proprietà -> Web, (supponiamo che l'Url del progetto sotto l'opzione "IIS Express" sia http://localhost:33333/), quindi modificalo da http://localhost:33333/perhttp://mydomain:333333/ Nota: Dopo questa modifica, si dovrebbe né fare clic sul pulsante "Crea directory virtuale" a destra della casella Progetto URL né fare clic sul pulsante Salva della Visual Studio in quanto non saranno riusciti. È possibile salvare le impostazioni dopo il passaggio 3 successivo.
  3. Apri% USERPROFILE% \ My Documents \ IISExpress \ config \ applicationhost.config, cerca "33333: localhost", quindi aggiornalo su "33333: mydomain" e salva il file.
  4. Salvare le impostazioni come indicato al passaggio 2.
  5. Fare clic con il tasto destro su una pagina Web nel Visual Studio e fare clic su "Visualizza nel browser". Ora la pagina verrà aperta sotto http://mydomain:333333/e <script>alert(document.domain);</script>nella pagina avviserà "miodominio".

Nota: si presume che il numero di porta sopra elencato sia 33333. È necessario modificarlo con il numero di porta impostato da Visual Studio.

Post modificato: oggi ho provato con un altro nome di dominio e ho riscontrato il seguente errore: Impossibile avviare il server Web IIS Express. Impossibile registrare l'URL ... Accesso negato. (0x80070005) . Esco da IIS Express facendo clic con il pulsante destro del mouse sull'icona IIS Express nell'angolo destro della barra delle applicazioni di Windows, quindi riavvio Visual Studio come amministratore e il problema è risolto.


1
ora, questa è la risposta che dovrebbe essere considerata la soluzione corretta! Assicurati di modificare applicationhost.config che si trova in .vs / config se stai usando Visual Studio 2015.
Fabio Salvalai

1

Ho provato tutto sopra, niente ha funzionato. Ciò che ha risolto il problema è stato l'aggiunta di associazioni IPv6 nel file hosts. Nel passaggio 5 della risposta di @David Murdochs, aggiungi due righe anziché una, ovvero:

127.0.0.1 dev.example.com
::1 dev.example.com

L'ho capito controllando $ ping localhostdalla riga di comando, che era solito restituire:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Invece, ora restituisce:

Reply from ::1: time<1ms

Non so perché, ma per qualche motivo IIS Express ha iniziato a utilizzare IPv6 anziché IPv4.



0

Lasciandolo qui nel caso in cui qualcuno abbia bisogno ...

Avevo bisogno di avere domini personalizzati per una configurazione multisito di Wordpress in IIS Express, ma nulla ha funzionato fino a quando non ho eseguito Webmatrix / Visual Studio come amministratore. Quindi sono stato in grado di associare i sottodomini alla stessa applicazione.

<bindings> 
    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>

Quindi andando su http: //whatever.localhost: 12345 / verrà eseguito.

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.