stop - iis express visual studio 2017
Uso de dominios personalizados con IIS Express (12)
Al igual que Jessa Flint arriba, no quería editar manualmente .vs / config / applicationhost.config porque quería que los cambios persistieran en el control de código fuente. Tampoco quería tener un archivo por lotes separado. Estoy usando VS 2015 .
Propiedades del proyecto → Eventos de compilación → Línea de comando de evento de precompilación:
::The following configures IIS Express to bind to any address at the specified port
::remove binding if it already exists
"%programfiles%/IIS Express/appcmd.exe" set site "MySolution.Web" /-bindings.[protocol=''http'',bindingInformation=''*:1167:''] /apphostconfig:"$(SolutionDir).vs/config/applicationhost.config"
::add the binding
"%programfiles%/IIS Express/appcmd.exe" set site "MySolution.Web" /+bindings.[protocol=''http'',bindingInformation=''*:1167:''] /apphostconfig:"$(SolutionDir).vs/config/applicationhost.config"
Solo asegúrese de cambiar el número de puerto a su puerto deseado.
Tradicionalmente uso dominios personalizados con mi servidor de desarrollo localhost. Algo a lo largo de las líneas de:
dev.example.com
dev.api.example.com
Esto me ha proporcionado una gran flexibilidad al trabajar con API externas como Facebook. Esto ha funcionado muy bien en el pasado con el servidor de desarrollo de Visual Studio incorporado, porque todo lo que tenía que hacer era agregar un CNAME a los registros de DNS que apuntan a 127.0.0.1
.
Sin embargo, no he podido hacer que esto funcione con IIS Express. Todo lo que he intentado parece haber fallado. Incluso he agregado la configuración XML correcta al archivo applicationHost.config
para IIS Express, pero no parece reconocer las entradas tan válidas como lo haría una verdadera instalación de IIS.
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
Cada vez que ingreso a esta línea y trato de solicitar http://dev.example.com:1288
, recibo el siguiente mensaje:
Solicitud incorrecta (Nombre de host no valido
¿Alguien sabe si me falta algo obvio? ¿O el equipo de IIS Express realmente no tuvo la visión de este tipo de uso?
Cuando se utiliza Visual Studio 2012 con IIS Express, el cambio de un enlace existente no funciona de forma permanente. (Puede funcionar hasta que cierres VS, pero después de eso, las cosas se complican mucho).
La clave es mantener el enlace localhost existente y agregar un nuevo enlace después de él.
A menos que se esté ejecutando como administrador, también deberá ejecutar netsh add urlacl
(para netsh add urlacl
permisos para ejecutar un sitio no local como usuario estándar).
Si desea permitir cualquier nombre de host, el proceso completo es el siguiente:
- Cree su aplicación web y averigüe qué puerto está utilizando (consulte las propiedades del proyecto, la pestaña Web, la URL del proyecto).
Desde un indicador del administrador, ejecute los siguientes comandos (reemplazando el número de puerto con el número de puerto que descubrió en el # 1):
netsh http add urlacl url="http://*:portnumber/" user=everyone netsh http add urlacl url="http://localhost:portnumber/" user=everyone
También puede usar su nombre de usuario (DOMINIO / USUARIO) en lugar de todos para una mejor seguridad.
- Abra applicationhost.config (generalmente en Mis documentos / IIS Express / config) y busque el elemento con su número de puerto.
Agregue un enlace más con el nombre de host que desee (en este caso, *). Por ejemplo:
<site name="MvcApplication1" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:/sites/MvcApplication1" /> </application> <bindings> <binding protocol="http" bindingInformation="*:12853:localhost" /> <binding protocol="http" bindingInformation="*:12853:*" /> </bindings> </site>
Tenga en cuenta que, si desea abrir todos los nombres de host (*), necesitará dos comandos netsh (uno para * y otro para localhost). Si solo desea abrir un nombre de host específico, no necesita estrictamente el segundo comando netsh (localhost); solo el que tiene su nombre de host específico es suficiente.
Dejando esto aquí por si alguien necesita ...
Necesitaba tener dominios personalizados para una configuración de Wordpress Multisite en IIS Express, pero nada funcionó hasta que ejecuté Webmatrix / Visual Studio como Administrador. Luego pude unir subdominios a la misma aplicación.
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
<binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>
Luego, vaya a http://whatever.localhost:12345/ se ejecutará.
El nombre de host no válido indica que (lo más probable) el sitio real que configuró en el archivo de configuración de IIS Express no se está ejecutando. IIS Express no tiene un modelo de proceso como IIS.
Para que su sitio se ejecute, debe iniciarse explícitamente (ya sea abriendo y accediendo desde webmatrix, o desde la línea de comandos llamando a iisexpress.exe (desde su directorio de instalación) con el parámetro / site.
En general, los pasos para permitir el uso de nombres DNS completos para el acceso local son: Usemos su ejemplo del nombre de DNS dev.example.com
- edite el archivo% windows% / system32 / drivers / etc / hosts para asignar dev.example.com a 127.0.0.1 (se requiere privilegio de administrador). Si controla el servidor DNS (como en el caso de Nick), la entrada de DNS es suficiente ya que este paso no es necesario.
- Si accede a Internet a través de un proxy, asegúrese de que dev.example.com no sea enviado al proxy (debe ingresar en la lista de excepciones en su navegador (para IE sería Herramientas / Opciones de Internet / Conexiones / Configuración de LAN) luego vaya a Proxy Server / Advanced y ponga dev.example.com en la lista de excepciones.
Configure el enlace de IIS Express para su sitio (por ejemplo: Sitio1) para incluir dev.example.com. Se necesitará privilegio administrativo para utilizar el enlace. Alternativamente, se puede hacer una reserva de URL por única vez con http.sys usando
netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>
inicie
iisexpress /site:Site1
o abra Site1 en WebMatrix
En mi instalación de WebMatrix IIS Express, el cambio de "*:80:localhost"
a "*:80:custom.hostname"
no funcionó ("Nombre de host incorrecto", incluso con las asignaciones apropiadas de etc / hosts), pero "*:80:"
funcionó - y sin ninguno de los pasos adicionales requeridos por las otras respuestas aquí. Tenga en cuenta que "*:80:*"
no lo hará; dejar fuera el segundo asterisco.
Estaba tratando de integrar la dirección IP pública en mi flujo de trabajo y estas respuestas no ayudaron (me gusta usar el IDE como el IDE). Pero lo anterior me llevó a la solución (después de aproximadamente 2 horas de golpear mi cabeza contra una pared para lograr que esto se integre con Visual Studio 2012 / Windows 8), esto es lo que terminó funcionando para mí.
applicationhost.config generado por VisualStudio en C:/Users/usr/Documents/IISExpress/config
<site name="MySite" id="1">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:/Users/usr/Documents/Visual Studio 2012/Projects/MySite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:8081:localhost" />
<binding protocol="http" bindingInformation="*:8082:localhost" />
<binding protocol="http" bindingInformation="*:8083:192.168.2.102" />
</bindings>
</site>
- Configure IISExpress para que se ejecute como
Administrator
modo que pueda enlazarse a direcciones externas (no al host local) - Ejecute Visual Stuio como
Administrator
para que pueda iniciar el proceso como administrador permitiendo que se realice el enlace.
El resultado neto es que puede navegar hasta 192.168.2.102
en mi caso y prueba (por ejemplo, en un emulador de Android. Realmente espero que esto ayude a alguien más, ya que este fue definitivamente un proceso irritante para mí.
Aparentemente es una característica de seguridad que me encantaría ver desactivada.
Estaba usando iisexpress-proxy (de npm) para esto.
Esto es lo que me funcionó (actualizado para VS 2013, consulte el historial de revisiones para 2010, para VS 2015 vea esto: https://.com/a/32744234/218971 ):
- Haga clic derecho en su Proyecto de aplicación web ▶
Properties
▶Web
, luego configure la secciónServers
siguiente manera:- Seleccione IIS Express ▼ del menú desplegable
- Url del proyecto:
http://localhost
- Anular la URL de la raíz de la aplicación:
http://dev.example.com
- Haga clic en Crear directorio virtual (si obtiene un error aquí, es posible que deba deshabilitar IIS 5/6/7/8, cambiar el
Default Site
de IIS a cualquier cosa que no sea el puerto:80
, asegurarse de que Skype no esté usando el puerto 80 , etc.)
- Opcionalmente: establezca la
Start URL
enhttp://dev.example.com
Abra
%USERPROFILE%/My Documents/IISExpress/config/applicationhost.config
(Windows XP, Vista y 7) y edite la definición del sitio en el bloque de configuración<sites>
coincida con lo siguiente:<site name="DevExample" id="997005936"> <application path="/" applicationPool="Clr2IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:/path/to/application/root" /> </application> <bindings> <binding protocol="http" bindingInformation=":80:dev.example.com" /> </bindings> <applicationDefaults applicationPool="Clr2IntegratedAppPool" /> </site>
Si ejecuta MVC: asegúrese de que
applicationPool
esté configurado en una de las opciones "Integradas" (como "Clr2IntegratedAppPool").- Abra su archivo
hosts
y agregue la línea127.0.0.1 dev.example.com
. - ► ¡Inicia tu aplicación!
Algunos buenos consejos de los comentarios:
- Es posible que deba ejecutar Visual Studio como administrador.
- Si desea que otros desarrolladores vean su ejecución de IIS
netsh http add urlacl url=http://dev.example.com:80/ user=everyone
- Si desea que el sitio se resuelva para todos los hosts, establezca
bindingInformation="*:80:"
. Utilice cualquier puerto que desee, 80 es conveniente.
La respuesta votada arriba es válida ... y esta información me ayudó bastante. Sé que este tema se ha discutido anteriormente, pero quería agregar alguna información adicional. La gente dice que debe "editar manualmente" el archivo application.config en el directorio Usuarios IISExpress / Config. Este fue un gran problema para mí porque quería distribuir la configuración a través de control de Source a varios desarrolladores.
Lo que encontré es que puede automatizar la actualización de este archivo usando el programa "C: / Archivos de programa / IIS Express / appcmd.exe". Me tomó un tiempo averiguar los parámetros de control, pero compartiré mis conclusiones aquí. Esencialmente, puede crear un archivo .bat que ejecute tanto el comando NETSH como el APPCMD.EXE (y quizás intercambiar un archivo de host si lo desea) para facilitar la configuración del encabezado de host con IIS Express.
El archivo de instalación de tu bat se vería así:
netsh http add urlacl url=http://yourcustomdomain.com:80/ user=everyone
"C:/Program Files/IIS Express/appcmd.exe" set site "MyApp.Web" /+bindings.[protocol=''http'',bindingInformation=''*:80:yourcustomdomain.com'']
También haré un archivo bat "Desinstalar" que limpiará estos enlaces ... (porque muchas veces simplemente estoy falsificando DNS para poder trabajar en el código que es sensible al nombre de host)
netsh http delete urlacl url=http://yourcustomdomain.com:80/
"C:/Program Files/IIS Express/appcmd.exe" set site "MyApp.Web" /-bindings.[protocol=''http'',bindingInformation=''*:80:yourcustomdomain.com'']
Espero que esta información sea útil para alguien ... Me tomó un poco descubrirla.
La solución de David es buena. Pero encontré la <script>alert(document.domain);</script>
en la página aún alerta "localhost" porque la URL del proyecto sigue siendo localhost incluso si se ha anulado con http://dev.example.com
. Otro problema con el que me encuentro es que me avisa de que el puerto 80 ya estaba en uso, incluso si he deshabilitado Skype con el número de puerto 80 recomendado por David Murdoch. Así que he descubierto otra solución que es mucho más fácil:
- Ejecute el Bloc de notas como administrador y abra el dominio C: / Windows / System32 / drivers / etc / hosts, agregue 127.0.0.1 mydomain y guarde el archivo;
- Abra el proyecto web con Visual Studio 2013 (Nota: también debe ejecutarse como administrador), haga clic derecho en el proyecto -> Propiedades -> Web, (supongamos que la URL del proyecto bajo la opción "IIS Express" es
http://localhost:33333/
), luego cámbielo dehttp://localhost:33333/
ahttp://mydomain:333333/
Nota: después de este cambio, tampoco debe hacer clic en el botón "Crear directorio virtual" a la derecha del cuadro Url del proyecto ni haga clic en el botón Guardar de Visual Studio, ya que no tendrán éxito. Puede guardar su configuración después del siguiente paso 3. - Abra% USERPROFILE% / Mis documentos / IISExpress / config / applicationhost.config, busque "33333: localhost", luego actualícelo a "33333: mydomain" y guarde el archivo.
- Guarde su configuración como se mencionó en el paso 2.
- Haga clic derecho en una página web en su estudio visual, y haga clic en "Ver en el navegador". Ahora la página se abrirá bajo
http://mydomain:333333/
, y<script>alert(document.domain);</script>
en la página alertará "mydomain".
Nota: Se supone que el número de puerto mencionado anteriormente es 33333. Debe cambiarlo al número de puerto establecido por su estudio visual.
Publicación posterior: hoy probé con otro nombre de dominio y obtuve el siguiente error: No se pudo iniciar el servidor web IIS Express. Error al registrar la URL ... Acceso denegado. (0x80070005) . Salgo de IIS Express haciendo clic derecho en el ícono de IIS Express en la esquina derecha de la barra de tareas de Windows, y luego reinicio mi estudio visual como administrador, y el problema desaparece.
Para Visual Studio 2015 se aplican los pasos de las respuestas anteriores, pero el archivo applicationhost.config
está en una nueva ubicación. En su carpeta de "soluciones" siga la ruta, esto es confuso si actualizó y tendría DOS versiones de applicationhost.config
en su máquina.
/.vs/config
Dentro de esa carpeta verá su archivo applicationhost.config
Alternativamente, puede buscar en la carpeta de la solución el archivo .config y encontrarlo de esa manera.
Personalmente utilicé la siguiente configuración:
Con lo siguiente en mi archivo hosts:
127.0.0.1 jam.net
127.0.0.1 www.jam.net
Y lo siguiente en mi archivo applicationhost.config:
<site name="JBN.Site" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:/Dev/Jam/shoppingcart/src/Web/JBN.Site" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:49707:" />
<binding protocol="http" bindingInformation="*:49707:localhost" />
</bindings>
</site>
¡Recuerda ejecutar tu instancia de visual studio 2015 como administrador! Si no quieres hacer esto cada vez que te recomiendo esto:
Cómo ejecutar Visual Studio como administrador por defecto
Espero que esto ayude a alguien, tuve problemas al intentar actualizar a Visual Studio 2015 y me di cuenta de que ninguna de mis configuraciones se había transferido.
Siguiendo el consejo de Jaro, pude hacer que esto funcionara bajo Windows XP e IIS Express (instalado a través de Web Matrix) con una pequeña modificación y no estaba limitado solo a localhost. Es sólo una cuestión de establecer los enlaces correctamente.
- Use WebMatrix para crear un nuevo sitio desde la carpeta en la raíz de su aplicación web.
- Cierre WebMatrix.
- Abra
%USERPROFILE%/My Documents/IISExpress/config/applicationhost.config
(Windows XP. Las rutas de Vista y 7 serán similares) y edite la definición del sitio en el bloque de configuración<sites>
coincida con lo siguiente:<site name="DevExample" id="997005936"> <application path="/" applicationPool="Clr2IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:/path/to/application/root" /> </application> <bindings> <binding protocol="http" bindingInformation="*:80:dev.example.com" /> </bindings> <applicationDefaults applicationPool="Clr2IntegratedAppPool" /> </site>
Si está ejecutando MVC, entonces mantenga applicationPool en una de las opciones "Integradas".