c# - unavailable - iis express visual studio 2017 external access
¿Cómo habilitar la solicitud externa en IIS Express? (22)
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)
¿Cómo puedo habilitar las solicitudes remotas en IIS Express? Scott Guthrie escribió que es posible, pero no dijo cómo.
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 <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 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.
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:
<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>
Añadir dos nuevos enlaces bajo bindings
. Puedes usar HTTPS también si quieres:
<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 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.
Hay tres cambios que deberías hacer.
- 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
- <VS 2015:
%userprofile%/My Documents/IISExpress/config/applicationhost.config
- VS 2015:
Encuentra el elemento de enlace de tu sitio, y agrega
<binding protocol="http" bindingInformation="*:8080:*" />
- 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".
Permitir IIS Express a través del firewall de Windows.
Inicio / Firewall de Windows con seguridad avanzada / Reglas de entrada / Nueva regla ...
Programa
%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 "/"
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. Luego ejecute el siguiente comando desde un indicador administrativo:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
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
La forma más simple y la mejor manera que encontré fue usarlo (la instalación tarda 2 minutos):
Funcionará con cualquier cosa que se ejecute en localhost. Simplemente regístrese, ejecute poco excutable y cualquier cosa que ejecute en localhost obtiene una URL pública a la que puede acceder desde cualquier lugar.
Esto es bueno para mostrar cosas a tus compañeros de equipo remotos, no jugar con la configuración de IIS o los firewalls. ¿Quieres detener el acceso simplemente terminar ejecutable.
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.
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:
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 se encuentran en el siguiente enlace:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Nada me funcionó hasta que encontré https://github.com/icflorescu/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
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.
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.
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 https://github.com/icflorescu/iisexpress-proxy , 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.
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.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
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
Si está trabajando con Visual Studio, siga estos pasos para acceder a IIS-Express sobre IP-Adress:
- Obtenga la dirección IP de su host:
ipconfig
en la línea de comandos de Windows Ir
$(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>
Agregue:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
con tu dirección IP- Ejecute su Visual Studio con derechos de administrador y todo debería funcionar
- 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 <binding />
en su configuración de IIS Express
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Finalmente, tienes que ejecutar Visual Studio como Admin.
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. .
<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 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.
Tengo algunos problemas al utilizar IIS Express en Win 8.1 y solicitud externa.
Sigo estos pasos para depurar la solicitud externa:
- Instalar IIS
- Configure Visual Studio para usar IIS local (propiedades de página en su proyecto web)
- Cree un AppPool exclusivo en IIS para trabajar con mi aplicación
- 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
- Configure el firewall de Windows para permitir la solicitud en el puerto 80 (reglas de entrada)
¡Esta funcionando!
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
[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.