Revista 100% Verde

No se puede conectar con el servidor IIS Express

Por Soloelectronicos @soloelectronico

Es un problema recurrente a muchos desarrolladores de asp.net con visual studio 2020 ( o versiones anteriores : si intentamos iniciar nuestra aplicación .net core, recibimos este este mensaje "No se puede conectar con el servidor IIS Express" .

Es cierto que hay muchas publicaciones que afirman solucionar este problema, asi que pude que haya probado todos los métodos que sugieren y quizas ninguno funcione.

He aqui algunas de esas ideas

  • Si entramos en las propiedades del proyecto bajo depuración y cambiamos el puerto, entonces se conectará 1 vez. Entonces, si intentamos conectarnos de nuevo, nos dará el mismo error otra vez. Luego, puedo volver a cambiar el puerto al original y se cargará una vez, luego fallará más allá de eso, hasta que lo vuelva a cambiar.
  • Las personas generalmente no tienen idea de cuáles son las configuraciones, por lo que no tienen una manera fácil de saber qué está pasando. Trate de usar Jexus Manager para ver qué pasa y luego la solución puede ser clara, jexusmanager.com/en/latest/tutorials/vs-diagnostics.html
  • Eliminar la carpeta oculta .vs en la carpeta raíz que puede que resuelva el problema
  • No utilizar IISexpress, lo que puede evite el problema.

Bien , si se analiza con calma el problema , es posible entender que el puerto que visual studio va a usar para lanzar la aplicación web en el navegador haya cambiado por alguna razón ( por ejemplo si ha copiado el directorio de la aplicación al completo) , y ese es el motivo por el que debido a esa discordancias de los valores del puerto entre IIS y VS de ese error

¿Cómo lo resolvemos? pues siguiendo los mismos pasos que haríamos para hacer accesible la aplicación desde una IP y no desde localhost desde el propio equipo de desarrollo

Estos serian los pasos:

1. Averiguamos con qué dirección está visible nuestro equipo desde el exterior
Esto podemos hacerlo con cierta facilidad ejecutando el comando " ipconfig | find "IPv" " en la terminal (cmd) .

El número de resultados que veremos ahí dependerá de los adaptadores de red (físicos o virtuales) que tengamos configurados en nuestro equipo. De ellos tendremos que seleccionar la dirección que se encuentre en el rango de red usado por los equipos externos desde los cuales queremos acceder a nuestra web.

2. Localizamos el archivo de configuración de IIS Express del proyecto

Este archivo se llama "applicationhost.config " y en proyectos de Visual Studio se encuentra en una carpeta llamada ".vs\nombre de proyecto\config" que encontramos en el directorio de la solución, en la subcarpeta del nombre del proyecto y dentro de ella, en la subcarpeta "config".

No se puede conectar con el servidor IIS Express

En otros casos, el archivo de configuración se puede encontrar en la carpeta de configuración de IIS Express de vuestro usuario en el equipo: %userprofile%\documents\iisexpress\config.

3. Localizamos las líneas donde se especifica la URL por defecto del proyecto

En el archivo "applicationhost.config ", debemos localizar la parte de la configuración donde se indica la URL de acceso al proyecto en la máquina local. Por ejemplo, podría ser algo como esto:

Observe que este binding está limitando el acceso a vuestro sitio web, permitiendo únicamente el uso del host "localhost" para acceder al mismo. Para habilitar el acceso desde equipos externos, lo primero que tenemos que hacer es añadir otros bindings con el nombre de host que se utilizará desde fuera.

4. Añadimos a la configuración de IIS Express el nuevo binding con la dirección de nuestro equipo

En la sección de configuración <bindings>, añadimos una nueva línea en la que indicaremos que la aplicación también será accesible utilizando como host nuestra IP, de forma que quedaría más o menos como aparece a continuación.

Ojo, ¡deberiamos elegir un puerto distinto al que usamos en localhost para que no haya conflictos !

No se puede conectar con el servidor IIS Express

Bien, pues si ahora intentamos ejecutar sin depuración sin permisos de administrador nos aparecera el error de que no es posible iniciar IIS Express, pero no se preocupe pues este error aparece s iempre que no hayamos lanzado Visual Studio como administrador, pues el nivel de permisos del proceso bajo el que se lanza IIS Express no es suficiente como para "apropiarse" de una dirección y puerto TCP/IP del equipo y utilizarla para escuchar peticiones.

En cambio, si iniciamos Visual Studio como administrador veremos que arranca correctamente y que, de hecho, podemos acceder a la aplicación utilizando tanto localhost:44342 como con permisos de administrador 192.168.1.46:44342, lo que quiere decir que, si no existen problemas de permisos, el binding está bien hecho.

No se puede conectar con el servidor IIS Express

5. Reservar la URL y conceder permisos de uso (sólo no administradores)

Como hemos comentado antes, este paso no será necesario si estamos ejecutando Visual Studio (y por tanto IIS Express) como administrador. Pero si no es así, debemos abrir una la línea de comandos con permisos elevados y utilizar la siguiente instrucción para reservar la URL y darle derechos de uso a determinados usuarios del equipo, por ejemplo como sigue desde la terminal de windows (cmd) con permisos de administrador (no lo intente desde PowerShell porque le dara error) :

No se puede conectar con el servidor IIS Express

Pero antes de hacerlo tened en cuenta unos detalles:

  • Primero, la URL debe estar completa, incluida la barra del final.
  • El usuario puede ser cualquier grupo del sistema o nombre de usuario con dominio.
  • Los nombres de grupo son sensibles al idioma de instalación de Windows. Es decir, si vuestro Windows está instalado en inglés, debéis usar el nombre "everyone" en lugar de "todos".

Tras ejecutar el comando, ya debería ser posible acceder a la aplicación desde el equipo utilizando tanto la URL interna (localhost) como la externa (192...), cada una con su puerto correspondiente.

Pero el acceso externo aún no está garantizado: e l firewall impedirá el acceso a no ser que le indiquemos lo contrario.

6. Abrir el firewall

Por defecto, el firewall de Windows rechazará cualquier intento de acceso a la máquina desde el exterior, por lo que debemos configurar una regla de entrada que asegure que las peticiones hacia nuestra web podrán entrar sin que el firewall rechaze ese trafico.

Esto lo podemos hacer desde el interfaz grafico en configuración avanzada en reglas del Cortafuegos o bien desde la consola de comandos con permisos de administrador, ejecutando la siguiente orden :netsh advfirewall firewall add rule name="Acceso externo a mi aplicacion web" dir=in action=allow protocol=TCP localport=44342

Por supuesto, recuerde que:

  • El parámetro localport debe ser el puerto que haya elegido para el acceso externo, el mismo que usamos en el archivo de configuración de IIS Express, y más adelante al reservar la URL.
  • Es conveniente poner un nombre reconocible a la regla, de forma que más adelante podamos identificarla con facilidad.

¡Y eso es todo! Si ha llegado hasta aquí, ya podrá ejecutar o depurar vuestra aplicación en Visual Studio, y acceder a ella desde cualquier equipo de la red local usando la dirección que hayas elegido en los pasos anteriores.


Volver a la Portada de Logo Paperblog