Connessione a Visual Studio per il debug del server IIS Express tramite LAN

Ho un’applicazione di test ASP.NET MVC3 sviluppata in VS2012. Quando avvio il debug, l’app è accessibile dal computer host tramite la richiesta a http://localhost: . Ma se provo ad accedere alla stessa applicazione dalla macchina remota nella intranet tramite http://: ottengo l’ HTTP error 400: Bad request. Invalid Host Name. HTTP error 400: Bad request. Invalid Host Name. Per quanto funziona su IIS Express, qualsiasi configurazione del server è inaccessibile.

Ci sono dei modi per risolvere questo?

Aggiornare

Ho realizzato un video che descrive meglio il processo, https://youtu.be/5ZqDuvTqQVs

Se stai usando VS2013 o superiore, assicurati di eseguirlo come amministratore affinché funzioni.


Aprire %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (in VS2015 potrebbe essere $(solutionDir)\.vs\config\applicationhost.config ). Dentro dovresti vedere qualcosa di simile a questo:

         

Cambia bindingInformation=":8080:localhost" in bindingInformation="*:8080:*" (il numero di porta, 8080 nel mio caso, sarà diverso).

Nota: se non funziona, prova con bindingInformation="*:8080: l’asterisco può essere rimosso.

Quindi assicurarsi che il firewall consenta le connessioni in entrata su quella porta. Potrebbe essere necessario riavviare il sistema o almeno Visual Studio per ottenere IISExpress per ricaricare il file di configurazione.

Se questo non funziona, dai un’occhiata a questa risposta: https://stackoverflow.com/a/5186680/985284

VisualStudio 2015 non amministratore

  1. Nella directory della soluzione, nel file .vs\config\applicationHost.config modificare la linea

    a

    (dove 44302 è il tuo porto)

  1. Da un prompt dei comandi di amministrazione:

    io. Abilita i non amministratori a collegarsi alla porta

    netsh http add urlacl url=http://*:44302/ user=Everyone

    ii. Consenti tramite firewall

    netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow

  1. Inizia il debug da VisualStudio

Tranne che per modificare il file di configurazione di iisexpress, a volte devi anche eseguire il comando come di seguito.

netsh http aggiungi urlacl url = http: // *: 49419 / user = Everyone

Poiché non sono in grado di aggiungere un commento al post di @Garret Fogerlie e in risposta al problema dei commentatori (@ Y.Ecarri e @SamuelEdwinWard), ho seguito ciò che Garret suggeriva, utilizzando Visual Studio 2013, eseguendolo in modalità Admin e modificando il file application.config .

Dopo aver avviato il debug e verificato che ho ricevuto lo stesso messaggio di errore, sono tornato in application.config e ho visto che una nuova voce per il mio sito era stata creata proprio come il problema di Y.Ecarri.

Quindi ho interrotto il debug, ho tenuto aperta la soluzione in Visual Studio e modificato il file application.config per la nuova voce. Ho anche rimosso semplicemente * sings e localhost interamente, quindi ho aggiunto quanto segue per la nuova voce:

Come evitare di eseguire Visual Studio come amministratore

Usando la risposta sia di Garret che di @ shangkeyun puoi raggiungere la connessione al sito Web in esecuzione senza dover eseguire Visual Studio come utente amministratore:

  1. Apri %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. Cerca il tuo sito usando name=MySiteName
  3. Duplica l’elemento esistente nella sezione . Ora dovresti avere due linee con binding .
  4. Rimuovere la parte “localhost” in bindingInformation.
  5. Ora dovrebbe assomigliare a questo, supponendo che la porta sia 12345 :

       
  6. Rimuovere eventuali restrizioni del firewall eseguendo il seguente cmd come amministratore:

     netsh http add urlacl url=http://*:49419/ user=Everyone 

Grazie a byteit:

Vai a applicationhost.config in Documents / IISExpress / config

trova la voce per il sito specifico su cui stai lavorando:

Inserisci:

  

di fronte all’esistente

   

Per raggiungere la soluzione senza avere VS2013 creare una nuova voce xml del sito Web al momento del riavvio. Dovrai eseguire come amministratore.

Questo è ciò che ha funzionato per me:

  • Avviare il Gestore IIS
  • Aggiungi una nuova directory virtuale che punta alla cartella dei progetti ( C:\VSProjects nel mio caso)
  • Seleziona la nuova directory virtuale all’interno di IIS manager. Seleziona Directory Browsing dall’elenco di opzioni. Sul lato destro c’è un pulsante Enable . Cliccalo.

Ora posso accedere alla mia cartella e al cestino del progetto sulla rete tramite mypcname\VSProjects\myProj\outputBinViewer .

Dopo le configurazioni di cui sopra, ho dovuto eseguire Visual Studio in modalità amministrativa.

inserisci la descrizione dell'immagine qui

Alcuni di voi potrebbero impiegare molto tempo a modificare e testare utilizzando la directory% USERPROFILE%. Se si esegue VS debug , utilizzare $ (solutionDir) .vs \ config \ applicationhost.config

Se il problema era simile al debug in Visual Studio Code , l’ho risolto aggiungendo:

 "env": { // ... "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using // ... }, 

.. per launch.json

Apparentemente, per impostazione predefinita lega il protocollo http a ‘localhost: 5000’, quindi funziona con localhost ma non con indirizzo IP – né in remoto né localmente.

Se stai cercando di raggiungere un punto di interruzione da una richiesta proveniente da un altro computer, non dimenticare di controllare le impostazioni del firewall (e / o antivirus)

spero che questo ti aiuti