Conectarse a Visual Studio depurando el servidor IIS Express sobre la LAN

Tengo una aplicación ASP.NET MVC3 de prueba desarrollada en VS2012. Cuando comienzo la depuración, se accede a la aplicación desde el equipo host a través de la solicitud a http://localhost: . Pero si bash acceder a la misma aplicación desde la máquina remota en la intranet a través de http://: obtengo el HTTP error 400: Bad request. Invalid Host Name. HTTP error 400: Bad request. Invalid Host Name. En lo que se ejecuta en IIS Express, cualquier configuración de servidor es inaccesible.

¿Hay alguna forma de resolver esto?

Actualizar

Hice un video que describe mejor el proceso, https://youtu.be/5ZqDuvTqQVs

Si está utilizando VS2013 o superior, asegúrese de ejecutarlo como administrador para que esto funcione.


Abra el %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (en VS2015 puede ser el archivo $(solutionDir)\.vs\config\applicationhost.config ). En el interior deberías ver algo como esto:

         

Cambie el bindingInformation=":8080:localhost" a bindingInformation="*:8080:*" (el número de puerto, 8080 en mi caso, será diferente).

Nota: si no funciona, intente con bindingInformation="*:8080: el asterisco se puede eliminar.

Luego, asegúrese de que su firewall permita las conexiones entrantes en ese puerto. Es posible que deba reiniciar el sistema o al menos Visual Studios para que IISExpress vuelva a cargar el archivo de configuración.

Si esto no funciona, eche un vistazo a esta respuesta: https://stackoverflow.com/a/5186680/985284

VisualStudio 2015 Non-Admin

  1. En su dir de solución, en el archivo .vs\config\applicationHost.config cambie la línea

    a

    (donde 44302 es su puerto)

  1. Desde un indicador de comando de administrador:

    yo. Habilitar no administrador para vincular al puerto

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

    ii. Permitir mediante firewall

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

  1. Comience a depurar desde VisualStudio

Excepto para modificar el archivo de configuración de iisexpress, a veces también necesita ejecutar el comando como se muestra a continuación.

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

Dado que no puedo agregar un comentario a la publicación de @Garret Fogerlie y en respuesta al problema de los comentaristas (@ Y.Ecarri y @SamuelEdwinWard), seguí lo que sugirió Garret, utilizando Visual Studio 2013, ejecutándolo en modo Admin y cambiando el archivo application.config .

Después de iniciar la depuración y ver que obtuve el mismo mensaje de error, volví a application.config y vi que se había creado una nueva entrada para mi sitio al igual que el problema de Y.Ecarri.

Así que dejé de depurar, mantuve mi solución abierta en Visual Studio y edité nuevamente el archivo application.config para la nueva entrada. También simplemente localhost completo los * sings y el localhost , así que tuve lo siguiente para la nueva entrada:

Cómo evitar ejecutar Visual Studio como administrador

Usando la respuesta de Garret y @ shangkeyun, puede lograr conectarse al sitio web en ejecución sin necesidad de ejecutar Visual Studio como usuario administrador:

  1. Abra %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. Busque su sitio usando name=MySiteName
  3. Duplique el elemento existente en la sección . Ahora debería tener dos líneas con binding .
  4. Elimine la parte “localhost” en bindingInformation.
  5. Ahora debería verse así, suponiendo que el puerto es 12345 :

       
  6. Elimine las restricciones de firewall ejecutando el siguiente cmd como administrador:

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

Gracias a byteit:

Vaya a applicationhost.config en Documents / IISExpress / config

encuentre la entrada para el sitio en particular en el que está trabajando:

añadir:

  

frente a la existente

   

Para lograr la solución sin tener VS2013 cree una nueva entrada xml de sitio web para usted cuando reinicie. Tendrá que ejecutar como administrador.

Esto es lo que funcionó para mí:

  • Inicie el Administrador de IIS
  • Agregue un nuevo directorio virtual que apunte a la carpeta de proyectos ( C:\VSProjects en mi caso)
  • Seleccione el nuevo directorio virtual dentro del administrador de IIS. Seleccione Directory Browsing en el Directory Browsing de la lista de opciones. En el lado derecho hay un botón Enable . Pinchalo.

Ahora puedo acceder a mi carpeta y al contenedor del proyecto en la red a través de mypcname\VSProjects\myProj\outputBinViewer .

Después de las configuraciones anteriores, tuve que ejecutar Visual Studio en modo administrativo.

enter image description here

Algunos de ustedes pueden pasar mucho tiempo modificando y probando usando su directorio% USERPROFILE%. Si está ejecutando depuración VS , use $ (dir_solución) .vs \ config \ applicationhost.config

Tenía un problema de depuración muy similar en Visual Studio Code , lo resolví añadiendo:

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

.. para lanzar.json

Aparentemente, de forma predeterminada vincula el protocolo http a ‘localhost: 5000’, por lo que funciona con localhost pero no con la dirección IP , ni de forma remota ni local.

Si intenta acceder a un punto de interrupción mediante una solicitud proveniente de otra computadora, no olvide verificar la configuración de su firewall (y / o antivirus)

espero que esto ayude