Acceder desde una Ip a IIS Express


Aunque IIS Express está diseñado principalmente para ser utilizado por desarrolladores en  un equipo de trabajo usando simplemente “localhost:puerto” como punto de pruebas pruebas, quizás no sepa que haciendo un par de cambios en la configuración , también es posible utilizarlo desde equipos externos, por ejemplo para poder hacer pruebas de una web o servicio desde otros dispositivos conectados a la misma red  como terminales móviles .

Partiremos de un proyecto ASP.NET  Core  creado en Visual Studio , da igual si se trata de una aplicación MVC, Web Forms, Web API o lo que sea. Para desarrollar el ejemplo, imaginemos que al ejecutarlo en local estamos usando la URL http://localhost:44342/.

Veamos paso a paso cómo acceder a esta aplicación desde otro equipo conectado a la red local, y cómo solucionar algunos de los problemas que podemos encontrar por el camino.

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)  de la siguiente forma:

C:\WINDOWS\system32>ipconfig | find "IPv4"
Dirección IPv4. . . . . . . . . . . . . . : 192.168.56.1
Dirección IPv4. . . . . . . . . . . . . . : 192.168.99.1
Dirección IPv4. . . . . . . . . . . . . . : 192.168.1.46
Dirección IPv4. . . . . . . . . . . . . . : 172.17.117.209
Dirección IPv4. . . . . . . . . . . . . . : 172.17.177.129

C:\WINDOWS\system32>

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.

En el jemplo  como  todos los equipos de la red local usan direcciones del tipo 192.168.56.*,  el nombre de host que deberían usar para acceder a mi equipo de trabajo sería la 192.168.56.1

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”.

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:

<bindings>
<binding protocol=”http” bindingInformation=”*:53980:localhost” />
<binding protocol=”https” bindingInformation=”*:44342:localhost” />
</bindings>

 

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 !

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 siempre 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.

 

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) :

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: el 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 lopodemos hacer dede el intrefaz graficos en configuracion avanzada en reglas del Cortafuegois  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.

Como ultima nota, si  desea probar su aplicacion desde un  dispositivo android , aseguresea antes qeu este esta dentro de su red, y no olvide escribir la direcccion completa (con https)  y desde un navegador diferente al usado como navegador interna ( por ejemplo con Chrome o Firefox)

¡Y eso es todo! Si ha llegado hasta aquí, ya podra 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.