¿Cómo puedo habilitar solicitudes remotas en IIS Express? Scott Guthrie escribió que es posible pero no dijo cómo.
¿Cómo puedo habilitar solicitudes remotas en IIS Express? Scott Guthrie escribió que es posible pero no dijo cómo.
Respuestas:
Ahora 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 esa publicación resumida:
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. Luego ejecute el siguiente comando desde un indicador administrativo:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
comando para permitir conexiones en cualquier nombre de host?
user={PARAM_USER}
estará en su propio idioma.
user=todos
lugar de user=everyone
.
Hay tres cambios que puede necesitar hacer.
.config
archivo. Típicamente:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Encuentre el elemento de enlace de su sitio y agregue
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
¿Dónde everyone
está un grupo de Windows? Use comillas dobles para grupos con espacios como "Tout le monde".
Permitir IIS Express a través del firewall de Windows.
Inicio / Firewall de Windows con seguridad avanzada / Reglas de entrada / Nueva regla ...
Programar
%ProgramFiles%\IIS Express\iisexpress.exe
O Puerto 8080 TCP
Ahora, cuando comience iisexpress.exe
, debería ver un mensaje como
URL registrada correctamente "http: // *: 8080 /" para la aplicación "hello world" del sitio / / "
users=everyone
de netsh
(segundo paso) puede causar un error 1789. Solución es traducir everyone
al nombre del grupo correspondiente en su idioma.
Project Url
, si ingreso un asterisco para el nombre de host, da un error. Si ingreso algo más, intenta crear un nuevo directorio virtual. No se vincula a la entrada en application.config.
bindingInformation="*:8080:hostname"
y en el paso 2 url=http://hostname:8080/
, y en las propiedades de su proyecto web de Visual Studio en la pestaña Web configure la URL del proyecto en http://hostname:8080/
. Elimine el *
urlacl si ya creó uno; no funcionará si tienes ambos. Finalmente, la URL a la que va en su navegador web debe hacer referencia al nombre de host, no localhost.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Recuerdo haber tenido los mismos problemas al intentar este flujo de trabajo hace unos meses.
Es por eso que escribí una utilidad proxy simple específicamente para este tipo de escenario: https://github.com/icflorescu/iisexpress-proxy .
Al usar el Proxy IIS Express , todo se vuelve bastante simple: no es necesario "netsh http add urlacl url = vaidesg: 8080 / user = everyone" o estropear su "applicationhost.config".
Solo 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 funcionó para mí 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 una dirección IP externa xxxx: 81
Editar: actualmente estoy usando ngrok
Como nota al margen de esto:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Esto solo funcionará en versiones en inglés de Windows. Si está utilizando una versión localizada, debe reemplazar "todos" por otra cosa, por ejemplo:
De lo contrario, recibirá un error (Error al crear SDDL, Error: 1332)
Un buen recurso es trabajar con SSL en tiempo de desarrollo, es más fácil con IISExpress de Scott Hanselman.
Lo que busca es la sección Obtener IIS Express para servir externamente a través del Puerto 80
Si está trabajando con Visual Studio, siga estos pasos para acceder a IIS-Express a través de la dirección IP:
ipconfig
en la línea de comandos de WindowsIr
$(SolutionDir)\.vs\config\applicationHost.config
Encontrar
<site name="WebApplication3" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:62549:localhost" />
</bindings>
</site>
Añadir:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
con su dirección IP
Lo resolví con la instalación de "Conveyor by Keyoti" en Visual Studio Professional 2015. El transportador genera una dirección REMOTA (su IP) con un puerto (45455) que permite la solicitud externa. Ejemplo:
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:<hostport>
)
Los pasos están en el siguiente enlace:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Si ha probado la respuesta del Coronel Panic pero no funciona en Visual Studio, intente esto:
Agregue otro <binding />
en su configuración de IIS Express
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Finalmente, debe ejecutar Visual Studio como administrador
Lo que me ayudó fue hacer clic derecho en el ícono 'IISExpress', 'Mostrar todas las aplicaciones'. Luego seleccioné el sitio web y vi qué aplicationhost.config usa, y la corrección fue perfecta.
Esto es lo que hice para Windows 10 con Visual Studio 2015 para habilitar el acceso remoto, tanto con http como con 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 encontrar algo como esto:
<site name="Project.Web" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
</bindings>
</site>
Agregue dos enlaces nuevos debajo bindings
. También puede usar HTTPS si desea:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
Agregue la siguiente regla a su firewall, abra una nueva cmd
solicitud 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 Web
pestaña y haga clic Create Virtual Directory
. Si Visual Studio no se ejecuta como administrador, esto probablemente fallará. Ahora todo debería funcionar.
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 desactivar temporalmente mi firewall para que funcionara.
Puede intentar configurar el reenvío de puertos en lugar de intentar modificar su configuración de IIS Express, agregar nuevas reglas HTTP.sys o ejecutar Visual Studio como administrador.
Básicamente, debe reenviar la ejecución de IP:PORT
su sitio web a algún otro puerto libre en su máquina pero en el adaptador de red externo, no localhost.
Lo que pasa es que IIS Express (al menos en Windows 10) se une a [::1]:port
lo que significa que escucha en el puerto IPv6. Tienes que tener esto en cuenta.
Así es como hice este trabajo: http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Espero eso ayude.
La forma más simple y genial que encontré fue usar (la configuración tarda 2 minutos):
Funcionará con cualquier cosa que se ejecute en localhost. Simplemente regístrese, ejecute poco ejecutable y todo lo que ejecute en localhost obtiene una URL pública a la que puede acceder desde cualquier lugar.
Esto es bueno para mostrar cosas a sus compañeros de equipo remotos, sin jugar con la configuración de IIS o los firewalls. Desea detener el acceso simplemente terminar ejecutable.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
asumiendo que 89230 es su puerto IIS Express
También puede ejecutar múltiples puertos incluso en plan gratuito
Tengo algunos problemas al usar IIS Express en Win 8.1 y solicitud externa.
Sigo estos pasos para depurar la solicitud externa:
¡Esta funcionando!
Si ejecuta Visual Studio desde Admin, puede agregar solo
<binding protocol="http" bindingInformation="*:8080:*" />
o
<binding protocol="https" bindingInformation="*:8443:*" />
dentro
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
y también tuve que abrir el puerto (8443) de la aplicación en el firewall de Windows.
Tenía un IIS local habilitado, así que acabo de crear una regla de reescritura en mi puerto de depuración ... Creo que esto es mejor y más genial que otro método porque es más fácil de eliminar una vez que termine de desarrollar ... Así es como se ve la reescritura. .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
VS también le permite desarrollar utilizando su IIS local directamente (que luego permite conexiones remotas), pero a su vez siempre debe ejecutarlo como administrador ... No me gusta eso.
Resolví este problema usando 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 virtualhost para ese puerto.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
Hice todos estos pasos y nada me ayudó. Y lo que necesito, es solo ejecutar mi aplicación a través de IIS Express ...
Espero eso ayude.
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 bonitos nombres de dominio:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
Las partes realmente increíbles que no pude encontrar en ningún otro lugar en SO en caso de que el enlace anterior desaparezca:
> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
> setupFriendlyHostnameUrl -url:<url>
> deleteFriendlyHostnameUrl -url:<url>
> setupUrl -url:<url>
> deleteUrl -url:<url>
> setupSslUrl -url:<url> -CertHash:<value>
> setupSslUrl -url:<url> -UseSelfSigned
> deleteSslUrl -url:<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 por usted! Si usa la opción -UseSelfSigned, es súper fácil.
Si desea hacer las cosas de la manera difícil, la parte no obvia es que debe decirle a HTTP.SYS qué certificado usar, como este:
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) 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 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
[diálogo de propiedades del proyecto]
Para el desarrollo con VisualStudio 2017 y un proyecto API NetCore:
1) En Cmd-Box: ipconfig / all para determinar la dirección IP
2a) Ingrese la dirección IP recuperada en Propiedades del proyecto-> Pestaña Depurar
2b) Seleccione un puerto y conéctelo a la dirección IP del paso 2a.
3) Agregue 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 una regla al firewall"). Agregar en ese caso hará 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 ahora tiene un puerto abierto que puede olvidar, pero este puerto abierto sigue siendo una invitación para invitados no deseados.