Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 30 de junio de 2020
Unable to connect to web server 'IIS Express'

Va un post rapidito, pero que seguro que puede ahorrar quebraderos de cabeza a más de uno que se encuentre con este problema al iniciar desde Visual Studio una aplicación ASP.NET, ASP.NET Core MVC/Web API, Razor Pages, o incluso Blazor que utilicen por debajo IIS Express.

El problema ocurre justo al ejecutar la aplicación con F5 o Ctrl+F5 desde el entorno de desarrollo; en ese momento, la ejecución se detiene y aparece un cuadro de diálogo con el mensaje:

"Unable to connect to web server 'IIS Express'"

Creo que llevo años encontrándome de vez en cuando con este problema al arrancar las aplicaciones, y nunca entendí muy bien por qué pasaba. Buscaba por la red y solo encontraba soluciones relativas a eliminar el archivo de configuración applicationhost.config que Visual Studio guarda en la carpeta ".vs" de la solución, a reiniciar el IDE o incluso la máquina, abrirlo como Administrador, o cambiar el puerto en la configuración del proyecto, normalmente algunas unidades por arriba o por abajo que el puerto asignado inicialmente.

Esta última opción es la que más veces me ha funcionado, pero no siempre iba bien, por lo que al final tampoco la identifiqué como una clara receta para paliar el problema que nos ocupa.

Hace unos días me ha vuelto a ocurrir con un proyecto que uso muy a menudo, y, de un día para otro, ha dejado de funcionar y ha comenzado a lanzarme a la cara el maldito cuadro de diálogo. La diferencia es que por fin he podido encontrar una respuesta satisfactoria, al menos para alguno de los escenarios que pueden causar el error :)

El motivo de este error es que Windows ha reservado para su uso interno el puerto utilizado por la aplicación, por lo que no podemos utilizarlo con IIS Express. La solución es sencilla: debemos cambiarlo por otro que esté libre.

Y claro, la cuestión es saber qué puertos están libres en el equipo.

Para ello, podemos ejecutar la siguiente instrucción de la consola, que nos mostrará justamente lo contrario, es decir, los puertos reservados:

C:\>netsh interface ipv4 show excludedportrange protocol=tcp

Protocolo tcp Intervalos de exclusión de puertos

Puerto de inicio    Puerto final
----------          --------
      2869        2869
      4800        4800
      5357        5357
      8145        8145
      9009        9009
     50000       50059     *
     54950       55049
     55050       55149
     55454       55553
     55554       55653
     61566       61665
     61666       61765
     61766       61865
     61866       61965
     63053       63152
     63153       63252
     63353       63452
     63453       63552
     63858       63957
     63958       64057
     64058       64157
     64158       64257

* - Exclusiones de puertos administrados.

C:\>_

Lo que vemos en el listado son rangos de puertos. Por ejemplo, podemos ver que están ocupados desde el 50000 hasta el 50059, o desde el 64158 hasta el 64257. Si nuestro proyecto usa uno de ellos, se generará el maldito error (que, dicho sea de paso, ya podría dar algo más de información sobre lo que ocurre...)

Sabiendo esto, ya es fácil localizar un puerto libre. En mi caso podemos ver que el 51001 está libre, así que solo hay que modificarlo en las propiedades del proyecto:

Cambiar el puerto del proyecto

¡Espero que os sea de ayuda!

Publicado en Variable not found.

13 Comentarios:

Vic dijo...

Acabas de darme una respuesta que he buscado más de una década! Y leyéndolo se ve lógico, claro. Pero lo que dices, una pequeña explicación en el error habría ayudado mucho...

Gracias una vez más!!

Anónimo dijo...

Muchas gracias amigo, tremenda solución.
Gracias por dedicar tu tiempo sin nada a cambio, ojalá existieran más personas así.

José María Aguilar dijo...

Me alegra saber que os es de utilidad, ¡muchas gracias por comentar!

Anónimo dijo...

Es la primera vez que soluciono un bug sin recurrir a stackoverflow jaja muchas gracias por compartir tu solución!

José María Aguilar dijo...

Genial! :D

Muchas gracias por comentar!

Anónimo dijo...

Funciona perfecto, gracias por compartir la solución

Anónimo dijo...

Estimado, me a sido de gran ayuda su aporte, nada mas que decir que estoy muy agradecido del gran apoyo la comunidad... :)

saludos... y gracias

edubuen dijo...

Me ha ayudado a solucionarlo, gracias

Martinez dijo...

Si os sirve de ayuda también me he encontrado con que el IIS Express lanza ese mensaje si la url a la que se está accediendo esta dentro nuestra reserva de url (urlacl)

netsh http show urlacl

Reservas de direcciones URL:
----------------------------

Dirección URL reservada : https://+:54503/
Usuario: \Todos
Escuchar: Yes
Delegar: No
SDDL: D:(A;;GX;;;WD)

Para solucionarlo simplemente hay que borrar esa entrada

netsh http delete urlacl url=https://+:54503/

y listo, todo vuelve a conectar.

Matias dijo...

Excelente info!

Anónimo dijo...

Gracias hermano, de verdad que me salvaste de una buena. Hice una actualización y windows me ocupó el puerto que yo utilizaba en una aplicación web, en mi trabajo. Me estaba volviendo loco y tu solución, me lo arregló.

Antonio Máximo dijo...

Por suerte esta entrada aparecía de las primeras en Google y resolví rápidamente el problema. Gracias!

Fernando Developer dijo...

José Maria Muchas gracias por el post. Tu solucion propuesta funciona perfectamente.
Muchas muchas gracias.