¿Cómo habilitar la solicitud externa en IIS Express?

¿Cómo puedo habilitar las solicitudes remotas en IIS Express? Scott Guthrie escribió que es posible, pero no dijo cómo.

Hay una publicación de blog en el sitio del equipo de IIS que explica cómo habilitar las conexiones remotas en IIS Express . Aquí está la parte pertinente de ese post resumido:

En Vista y Win7, ejecute el siguiente comando desde un indicador administrativo:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

Para XP, primero instale las herramientas de soporte de Windows XP Service Pack 2. A continuación, ejecute el siguiente comando desde un indicador administrativo:

httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)

Hay tres cambios que deberías hacer.

  1. Dígale a IIS Express que se enlace a todas las direcciones IP y nombres de host. En su archivo .config . Típicamente:
    • VS 2015: $(solutionDir)\.vs\config\applicationhost.config
    • %userprofile%\My Documents\IISExpress\config\applicationhost.config

Encuentra el elemento de enlace de tu sitio, y agrega

   
  1. Configure el bit de Windows llamado ‘http.sys’. Como administrador, ejecute el comando:
  netsh http add urlacl url=http://*:8080/ user=everyone 

Donde everyone es un grupo de windows. Use comillas dobles para grupos con espacios como “Tout le monde”.

  1. Permitir IIS Express a través del firewall de Windows.

    Inicio / Firewall de Windows con seguridad avanzada / Reglas de entrada / Nueva regla …

    Progtwig %ProgramFiles%\IIS Express\iisexpress.exe
    O puerto 8080 TCP

Ahora cuando inicie iisexpress.exe debería ver un mensaje como

URL registrada correctamente “http: // *: 8080 /” para la aplicación “hello world” del sitio “/”

Recuerdo que me encontré con los mismos problemas al intentar este flujo de trabajo hace unos meses.

Es por eso que escribí una utilidad de proxy simple específicamente para este tipo de escenario: https://github.com/icflorescu/iisexpress-proxy .

Con el Proxy de IIS Express , todo se vuelve bastante simple: no es necesario “netsh http add urlacl url = vaidesg: 8080 / user = everyone” o meterse con su “applicationhost.config”.

Simplemente emita esto en el símbolo del sistema:

iisexpress-proxy 8080 to 3000

… y luego puede apuntar sus dispositivos remotos a http: // vaidesg: 3000 .

La mayoría de las veces, más simple es mejor.

Nada me funcionó hasta que encontré iisexpress-proxy .

Abra el símbolo del sistema como administrador, luego ejecute

 npm install -g iisexpress-proxy 

entonces

 iisexpress-proxy 51123 to 81 

asumiendo que su proyecto de Visual Studio se abre en localhost: 51123 y desea acceder a la dirección IP externa xxxx: 81

Edición: solo para mencionar que funciona muy bien con noip.com

Un buen recurso es Trabajar con SSL en tiempo de desarrollo es más fácil con IISExpress de Scott Hanselman.

Lo que está buscando es la sección Obtención de IIS Express para servir externamente a través del Puerto 80

Como una nota al margen de esto:

 netsh http add urlacl url=http://vaidesg:8080/ user=everyone 

Esto solo funcionará en las versiones en inglés de Windows. Si está utilizando una versión localizada, debe reemplazar “todos” con otra cosa, por ejemplo:

  • “Iedereen” cuando se usa una versión holandesa
  • “Jeder” cuando se usa una versión alemana
  • “Mindenki” cuando se utiliza una versión húngara

De lo contrario, obtendrá un error (Error al crear SDDL, Error: 1332)

Lo solucioné con la instalación de “Conveyor by Keyoti” en Visual Studio Professional 2015. El transportador genera una dirección REMOTE (su IP) con un puerto (45455) que permite la solicitud externa. Ejemplo:

introduzca la descripción de la imagen aquí

Conveyor le permite probar aplicaciones web desde tabletas y teléfonos externos en su red o desde emuladores de Android (sin http://10.0.2.2: )

Los pasos se encuentran en el siguiente enlace:

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

Si está trabajando con Visual Studio, siga estos pasos para acceder a IIS-Express sobre IP-Adress:

  1. Obtenga la dirección IP de su host: ipconfig en la línea de comandos de Windows
  2. Ir

     $(SolutionDir)\.vs\config\applicationHost.config 
  3. Encontrar

             
  4. Agregue:
    con tu dirección IP

  5. Ejecute su Visual Studio con derechos de administrador y todo debería funcionar
  6. Tal vez busque algunos problemas con el firewall si intenta conectarse desde el control remoto

Si ha probado la respuesta del Coronel Panic pero no funciona en Visual Studio, intente esto:

Agregue otro en su configuración de IIS Express

     

Finalmente, tienes que ejecutar Visual Studio como Admin.

Lo que me ayudó fue hacer clic derecho en el ícono ‘IISExpress’, ‘Mostrar todas las aplicaciones’. Luego seleccioné el sitio web y vi qué aplicación de host.config utiliza, y la corrección fue perfecta.

Configuracion IISExpress

La respuesta aceptada a esta pregunta es una guía para que IIS Express funcione con webmatrix. Encontré esta guía más útil al intentar que funcione con VS 2010.

Simplemente seguí los pasos 3 y 4 (ejecutando IIS Express como administrador) y tuve que deshabilitar temporalmente mi firewall para que funcionara.

Esto es lo que hice para Windows 10 con Visual Studio 2015 para habilitar el acceso remoto, tanto con http como https:

El primer paso es vincular su aplicación a su dirección IP interna. Ejecute cmd -> ipconfig para obtener la dirección. Abra el archivo /{project folder}/.vs/config/applicationhost.config y desplácese hacia abajo hasta que encuentre algo como esto:

         

Añadir dos nuevos enlaces bajo bindings . Puedes usar HTTPS también si quieres:

   

Agregue la siguiente regla a su firewall, abra un nuevo indicador de cmd como administrador y ejecute los siguientes comandos:

 netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow 

Ahora inicie Visual Studio como Administrator . Haga clic derecho en el archivo de proyecto de proyectos web y seleccione Properties . Vaya a la pestaña Web y haga clic en Create Virtual Directory . Si Visual Studio no se ejecuta como administrador, esto probablemente fallará. Ahora todo debería funcionar.

introduzca la descripción de la imagen aquí

Puede intentar configurar el reenvío de puertos en lugar de modificar su configuración de IIS Express, agregar nuevas reglas HTTP.sys o ejecutar Visual Studio como administrador.

Básicamente, necesita reenviar la IP:PORT su sitio web se ejecuta en algún otro puerto libre en su máquina pero en el adaptador de red externo, no localhost.

La cosa es que IIS Express (al menos en Windows 10) se enlaza a [::1]:port lo que significa que escucha en el puerto IPv6. Necesitas tener esto en cuenta.

Aquí es cómo hice este trabajo – http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html

Espero eso ayude.

Tengo algunos problemas al utilizar IIS Express en Win 8.1 y solicitud externa.

Sigo estos pasos para depurar la solicitud externa:

  1. Instalar IIS
  2. Configure Visual Studio para usar IIS local (propiedades de página en su proyecto web)
  3. Cree un AppPool exclusivo en IIS para trabajar con mi aplicación
  4. En mi proyecto, estoy usando Oracle Client y debo tener 32 bits (64 bits no funcionan con Visual Studio), entonces necesito permitir 32 bits en el grupo de aplicaciones
  5. Configure el firewall de Windows para permitir la solicitud en el puerto 80 (reglas de entrada)

¡Esta funcionando!

Si ejecuta Visual Studio desde Admin, puede agregar solo

o

dentro

 %userprofile%\My Documents\IISExpress\config\applicationhost.config 

Tenía un IIS local habilitado, así que acabo de crear una regla de reescritura en mi puerto de depuración … Creo que es mejor y más fresco que cualquier otro método porque es más fácil de eliminar una vez que termine el desarrollo … Así es como se ve la reescritura. .

         

VS también te permite desarrollar utilizando tu IIS local directamente (lo que luego permite conexiones remotas), pero a su vez siempre debes ejecutarlo como administrador … No me gusta eso.

No pude atender sus solicitudes a otros usuarios en mi red local, todo lo que tuve que hacer (además de lo anterior) fue reiniciar mi enrutador BT Hub.

Esto es increíblemente increíble e incluso cubre HTTPS con nombres de dominio bonitos:

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

Las partes realmente asombrosas que no pude encontrar en ninguna otra parte en SO en caso de que el enlace anterior desaparezca:

 > C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage: > iisexpressadmincmd.exe   Supported commands: > setupFriendlyHostnameUrl -url: > deleteFriendlyHostnameUrl -url: > setupUrl -url: > deleteUrl -url: > setupSslUrl -url: -CertHash: > setupSslUrl -url: -UseSelfSigned > deleteSslUrl -url: > > Examples: 1) Configure "http.sys" and "hosts" file for friendly > hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl > -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd > deleteFriendlyHostnameUrl -url:http://contoso:80/ 

La utilidad anterior registrará el certificado SSL para usted! Si usa la opción -UseSelfSigned, es muy fácil.

Si quieres hacer las cosas de la manera más difícil, la parte no obvia es que debes decirle a HTTP.SYS qué certificado usar, así:

 netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE 

Certhash es la “huella digital” que puede obtener de las propiedades del certificado en MMC.

Hice lo siguiente y pude conectarme:

1) se cambió el enlace de configuración expresa de IIS del host local a ‘*’

protocolo de enlace = “http” bindingInformation = “*: 8888: *”

2) Regla de entrada definida en el firewall para permitir el puerto en particular para el tipo de protocolo: tcp

3) Agregue el siguiente comando para agregar la configuración de red para su puerto: netsh http add urlacl url = http: // *: 8888 / user = everyone

Resolví este problema utilizando el enfoque de proxy inverso.

Instalé el servidor wamp y utilicé la función de proxy inverso simple del servidor web apache.

Agregué un nuevo puerto para escuchar el servidor web Apache (8081). Luego agregué la configuración de proxy como host virtual para ese puerto.

  ProxyPass / http://localhost:46935/ ProxyPassReverse / http://localhost:46935/  

[diálogo de propiedades del proyecto]

Para el desarrollo utilizando VisualStudio 2017 y un proyecto de API de NetCore:

1) En Cmd-Box: ipconfig / all para determinar la dirección IP

2a) Ingrese la dirección IP recuperada en las propiedades del proyecto-> pestaña Depurar

2b) Seleccione un puerto y adjúntelo a la dirección IP del paso 2a.

3) Agregar una regla de permiso en el firewall para permitir el tráfico TCP entrante en el puerto seleccionado (mi firewall se activó con un cuadro de diálogo: “Bloquear o agregar regla al firewall”). Añadir será en ese caso hacer el truco.

Desventaja de la solución anterior:

1) Si utiliza una dirección IP dinámica, debe volver a realizar los pasos anteriores en caso de que se haya asignado otra dirección IP.

2) Su servidor tiene ahora un puerto abierto que podría olvidar, pero este puerto abierto sigue siendo una invitación para los invitados no deseados.