Conexión a Visual Studio depurando el servidor IIS Express a través de lan

84

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

¿Hay alguna forma de solucionar esto?

gator88
fuente
Utilice nuestra extensión gratuita, Conveyor para hacer esto marketplace.visualstudio.com/… funciona sin ningún cambio de configuración, sin problemas.
Jim W dice reinstalar a Monica el

Respuestas:

138

Actualizar

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

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


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

<site name="WebSite1" id="1" serverAutoStart="true">
    <application path="/">
        <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:8080:localhost" />
    </bindings>
</site>

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

Nota: Si no funciona, pruebe con bindingInformation="*:8080:el asterisco que se puede quitar.

Luego, asegúrese de que su firewall permita conexiones entrantes en ese puerto. Es posible que deba reiniciar el sistema o al menos Visual Studio 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

Garrett Fogerlie
fuente
30
Esta solución no funcionó para mí. En VS2013, después de modificar el atributo bindingInformation, cuando abro el IDE y cargo el proyecto, crea una nueva entrada (es decir <site name="Website1(1)" id="2" serverAutoStart="true">, todavía no puedo acceder al sitio web desde otro compuer.
Yván Ecarri
5
Esto funcionó para mí en VS2013: gilesey.wordpress.com/2013/04/21/…
Jay Cummins
10
Funcionó para mí El cambio principal fue ejecutar Visual Studio como administrador.
Tanmay Mandal
20
No sé por qué parece que fui el único con este problema, pero bindingInformation="*:8080:*"no funcionó para mí y resultó en el problema que estaba experimentando @ Y.Ecarri. Lo que finalmente terminó trabajando estaba bajando los asteriscos: bindingInformation=":8080:". Chico, esto me volvió loco, espero que ayude a alguien.
Drazen Bjelovuk
5
Igual que Drazen, tuvo que usar el modo Admin + bindingInformation=":8080:"(sin *)
Matthieu Charbonnier
42

VisualStudio 2015 No administrador

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

    <binding protocol="http" bindingInformation="*:44302:localhost" />

    a

    <binding protocol="http" bindingInformation=":44302:" />

    (donde 44302 es su puerto)


  1. Desde un símbolo del sistema de administración:

    yo. Permitir que los no administradores se vinculen al puerto

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

    ii. Permitir a través del firewall

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


  1. Comience a depurar desde VisualStudio
Gregmac
fuente
Tenga en cuenta que la carpeta .vs está oculta en Windows 10. Muestre los archivos ocultos para verla.
bhathiya-perera
Oh! ¡Eres mi héroe! ¡FINALMENTE! La clave era la configuración de la carpeta .vs. ¡No puedo agradecerles lo suficiente!
twsmale
Tenga en cuenta que @ArunPrasadES mencionó a continuación, ejecute VS como administrador si se encuentra con un error.
Elmer
@Elmer Ejecutar su IDE y depurar sus programas como administrador es una mala idea en general (con algunas excepciones limitadas). Lo más importante es que enmascara los problemas de permisos durante el desarrollo (cuando se solucionan fácilmente), lo que eventualmente hace que su programa (innecesariamente) requiera ser ejecutado como administrador, cosas como guardar archivos en una ubicación solo para administradores, etc. Es mejor simplemente solucione el problema con su IDE y / o OS / permisos de usuario.
gregmac
@gregmac Lo siento por el comentario negativo, lo que quise decir fue que mi IIS tenía problemas si cambiaba las opciones de enlace y no ejecutaba VS como administrador, algunos ID de error de proceso, que supongo que están relacionados con los permisos de Windows 10 ya que tengo un Windows nuevo 10 con una nueva instalación VS 2019. En cuanto al resto, estoy de acuerdo con usted al 100%
Elmer
21

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

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

shangkeyun
fuente
¿Para qué sirve el puerto 49419? ¿Es solo un puerto de ejemplo, que bien podría ser 8080?
oligofren
Respondiendo a mi propia pregunta: sí, es el puerto en el que se ejecuta la aplicación. Si usa esta respuesta, entonces ya no necesita ejecutar Visual STudio como administrador.
oligofren
1
¿Puede darnos una breve explicación de cómo funciona?
Shishir Gupta
12

Cómo evitar ejecutar Visual Studio como administrador

Con 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. Abierto %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
  2. Busque su sitio usando name=MySiteName
  3. Duplique el <binding>elemento existente en la <bindings>sección. Ahora debería tener dos líneas con binding.
  4. Elimine la parte "localhost" en bindingInformation.
  5. Ahora debería verse así, asumiendo que el puerto es 12345:

    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:" />
    
  6. Permitir que los no administradores se vinculen al puerto

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

EDITAR 2019: gregmac agregó un paso para incluir la instancia de VS en la lista blanca. Nunca necesité esto, pero lo enumeré de todos modos:

  1. netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow
oligofren
fuente
6
Agregar el netsh cambió el error a 'Servicio no disponible'
tofutim
@tofutim lo mismo aquí. ¿Encontraste una solución?
frostymarvelous
¿Reinició Visual Studio después?
oligofren
Hola, acabo de notar que el comando netsh era incorrecto cuando se combinaba con las líneas anteriores. Usé 12345 como puerto anterior, pero usé 49419 como puerto de ejemplo en el comando netsh. Esto se ha solucionado en mi actualización.
oligofren
10

Como 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, usando Visual Studio 2013, ejecutándolo en modo Admin y cambiando el application.config archivo.

Después de iniciar la depuración y ver que recibía el mismo mensaje de error, volví application.configy 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 volví a editar el application.configarchivo para la nueva entrada. También simplemente eliminé las *canciones y por localhostcompleto, por lo que tenía lo siguiente para la nueva entrada:

<binding protocol="https" bindingInformation=":44300:" />

hvaughan3
fuente
¡Esta es la única solución que ayudó! Gracias.
código5
2

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

carlo818
fuente
1

Gracias a byteit:

Vaya a applicationhost.config en Documents / IISExpress / config

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

añadir:

<binding protocol="http" bindingInformation="*:<your site port>:*" />

frente a lo existente

 <binding protocol="http" bindingInformation="*:<your site port>:localhost" />

Para lograr la solución sin que VS2013 cree una nueva entrada xml en el sitio web cuando reinicie. Deberá ejecutar como administrador.

Isaac Bolinger
fuente
1

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

ingrese la descripción de la imagen aquí

Arun Prasad ES
fuente
0

Esto es lo que funcionó para mí:

  • Inicie el Administrador de IIS
  • Agrega un nuevo directorio virtual que apunte a la carpeta de proyectos ( C:\VSProjectsen mi caso)
  • Seleccione el nuevo directorio virtual dentro del administrador de IIS. Seleccione Directory Browsingde la lista de opciones. En el lado derecho hay un Enablebotón. Pinchalo.

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

SaiyanGirl
fuente
0

Tenía un problema muy similar al depurar en Visual Studio Code , lo resolví agregando:

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

.. para lanzar.json

Aparentemente, de forma predeterminada enlaza 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 está intentando alcanzar un punto de interrupción mediante una solicitud procedente de una computadora diferente, no olvide verificar la configuración de su firewall (y / o antivirus)

espero que esto ayude

Carlos R Balebona
fuente