Tradicionalmente uso dominios personalizados con mi servidor de desarrollo localhost. Algo en la línea de:
dev.example.com
dev.api.example.com
Esto me ha proporcionado una gran flexibilidad al trabajar con API externas como Facebook. Esto funcionó muy bien en el pasado con el Visual Studio Development Server integrado, porque todo lo que necesitaba hacer era agregar un CNAME a los registros DNS que apuntaban 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 applicationHost.config
archivo para IIS Express, pero no parece reconocer las entradas tan válidas como lo haría una instalación verdadera de IIS.
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
Cada vez que entro en esta línea e intento 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 carece de la previsión para ver este tipo de uso?
fuente
Respuestas:
Esto es lo que funcionó para mí (actualizado para VS 2013, vea el historial de revisiones para 2010, para VS 2015 vea esto: https://stackoverflow.com/a/32744234/218971 ):
Properties
▶Web
, luego configure laServers
sección de la siguiente manera:http://localhost
http://dev.example.com
Default Site
a cualquier cosa que no sea puerto:80
, asegúrese de que Skype no esté usando el puerto 80 , etc.)Start URL
ahttp://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<sites>
bloque de configuración para que coincida con lo siguiente:Si ejecuta MVC: asegúrese de que
applicationPool
esté configurado en una de las opciones "Integradas" (como "Clr2IntegratedAppPool").hosts
archivo y agregue la línea127.0.0.1 dev.example.com
.Algunos buenos consejos de los comentarios:
fuente
Para Visual Studio 2015, se aplican los pasos de las respuestas anteriores, pero el
applicationhost.config
archivo está en una nueva ubicación. En su carpeta de "solución" siga el camino, esto es confuso si actualiza y tendría DOS versiones deapplicationhost.config
en su máquina.Dentro de esa carpeta verá su archivo applicationhost.config
Alternativamente, puede buscar en su carpeta de soluciones el archivo .config y encontrarlo de esa manera.
Personalmente utilicé la siguiente configuración:
Con lo siguiente en mi archivo de hosts:
Y lo siguiente en mi archivo applicationhost.config:
¡Recuerde ejecutar su instancia de Visual Studio 2015 como administrador! Si no quieres hacer esto cada vez que recomiendo esto:
Cómo ejecutar Visual Studio como administrador de forma predeterminada
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 estaba transfiriendo.
fuente
*:49707:
enlace en lugar de reemplazar el predeterminado*:49707:localhost
como se sugiere en muchas otras respuestas. Y tienes que ejecutar VS como administrador, de hecho (¡sic!). Gracias.http://jam.127.0.0.1.xip.io/
si no desea modificar su archivo de hosts. Además, los colaboradores no necesitarán modificar los suyos. Ver xip.io .Cuando se usa Visual Studio 2012 con IIS Express, cambiar un enlace existente no funciona de forma permanente. (Puede funcionar hasta que cierre 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.
A menos que esté ejecutando como administrador, también deberá ejecutar
netsh add urlacl
(para otorgarse permisos para ejecutar un sitio no localhost como usuario estándar).Si desea permitir cualquier nombre de host, el proceso completo es el siguiente:
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 n. ° 1):
También puede usar su nombre de usuario (DOMINIO \ USUARIO) en lugar de todos para una mayor seguridad.
Agregue un enlace más con el nombre de host que desee (en este caso, *). Por ejemplo:
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.
fuente
*
resuelto el "Servicio no disponible" para mí.El nombre de host no válido indica que el sitio real que configuró en el archivo de configuración de IIS Express (muy probablemente) 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 que se usen nombres DNS totalmente calificados para el acceso local son Usemos su ejemplo del nombre DNS dev.example.com
Configure el enlace de IIS Express para su sitio (por ejemplo: Sitio1) para incluir dev.ejemplo.com. Se necesitarán privilegios administrativos para usar el enlace. Alternativamente, se puede hacer una reserva de URL única con http.sys usando
netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>
iniciar
iisexpress /site:Site1
o abrir Site1 en WebMatrixfuente
Bad Request - Invalid Hostname
significa que el nombre de host que estoy tratando de usar no puede resolverse porque el equipo de IIS Express en su sabiduría infinita decidió llamar específicamente "localhost" como el único encabezado de host que funcionaría. Y VS no te permitirá ejecutarlo de otra manera que no sea "*: 1234: localhost"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 asignaciones de host / etc adecuadas), pero"*:80:"
hizo el trabajo - y con ninguno de los pasos adicionales requeridos por las otras respuestas aquí. Tenga en cuenta que"*:80:*"
no lo hará; deja el segundo asterisco.fuente
"*:80:*"
funcionó para mí, pero luego reinicié mi computadora y de repente no funcionó hasta que la cambié"*:80:"
y todo estuvo bien. Gracias.Intenté integrar la dirección IP pública en mi flujo de trabajo y estas respuestas no me ayudaron (me gusta usar el IDE como IDE). Pero lo anterior me llevó a la solución (después de aproximadamente 2 horas de golpearme la cabeza contra la pared para lograr que esto se integrara 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
Administrator
modo que pueda vincularse a direcciones externas (no al host local)Administrator
modo 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 probar (por ejemplo, en un emulador de Android. Realmente espero que esto ayude a alguien más, ya que definitivamente fue un proceso irritante para mí.Aparentemente es una característica de seguridad que me encantaría ver deshabilitada.
fuente
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 la 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 previo a la compilación:
Solo asegúrese de cambiar el número de puerto al puerto deseado.
fuente
La respuesta votada es válida ... y esta información me ayudó bastante. Sé que este tema se ha discutido antes, pero quería agregar alguna entrada adicional. La gente dice que debe "editar manualmente" el archivo application.config en el directorio Users IISExpress / Config. Este fue un gran problema para mí porque quería distribuir la configuración a través del control de origen a varios desarrolladores.
Lo que encontré es que puede automatizar la actualización de este archivo utilizando el programa "C: \ Archivos de programa \ IIS Express \ appcmd.exe". Me llevó un tiempo descubrir los parámetros de control, pero compartiré mis hallazgos aquí. Esencialmente, puede crear un archivo .bat que ejecute tanto el comando NETSH como el APPCMD.EXE (y tal vez intercambiar un archivo host si lo desea) para facilitar la configuración del encabezado del host con IIS Express.
Su archivo bat de instalación se vería así:
También haré un archivo bat "Desinstalar" que limpiará estos enlaces ... (porque muchas veces solo estoy falsificando DNS para poder trabajar en código que es sensible al nombre de host)
Espero que esta información sea útil para alguien. Me llevó un poco descubrirla.
fuente
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 se limitó solo a localhost. Es solo una cuestión de configurar los enlaces correctamente.
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP. Vista y las rutas de acceso 7 serán similares) y edite la definición del sitio en el<sites>
bloque de configuración para que coincida con lo siguiente:Si ejecuta MVC, mantenga el conjunto de aplicaciones configurado en una de las opciones "Integradas".
fuente
La solución de David es buena. Pero encontré que
<script>alert(document.domain);</script>
en la página todavía se alerta "localhost" porque la URL del proyecto sigue siendo localhost incluso si se ha anulado conhttp://dev.example.com
. Otro problema con el que me encuentro es que me alerta de que el puerto 80 ya ha estado en uso, incluso si he deshabilitado Skype usando el número de puerto 80 recomendado por David Murdoch. Así que he descubierto otra solución que es mucho más fácil:http://localhost:33333/
), luego cámbiela dehttp://localhost:33333/
a tener enhttp://mydomain:333333/
cuenta: Después de este cambio, no debe hacer clic en el botón "Crear directorio virtual" a la derecha del cuadro Url del proyecto ni hacer 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.http://mydomain:333333/
, y<script>alert(document.domain);</script>
en la página alertará "midominio".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 editada: Hoy probé con otro nombre de dominio y obtuve el siguiente error: No se puede iniciar el servidor web IIS Express. Error al registrar URL ... Acceso denegado. (0x80070005) . Salgo de IIS Express haciendo clic con el botón derecho en el icono 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.
fuente
Intenté todo lo anterior, nada funcionó. Lo que resolvió el problema fue agregar enlaces IPv6 en el archivo de hosts. En el paso 5 de la respuesta de @David Murdochs, agregue dos líneas en lugar de una, es decir:
Lo descubrí comprobando
$ ping localhost
desde la línea de comandos, que solía devolver:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
En cambio, ahora devuelve:
Reply from ::1: time<1ms
No sé por qué, pero por alguna razón IIS Express comenzó a usar IPv6 en lugar de IPv4.
fuente
Estaba usando iisexpress-proxy (de npm) para esto.
https://github.com/icflorescu/iisexpress-proxy
fuente
Dejar esto aquí por si alguien lo 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 vincular subdominios a la misma aplicación.
Luego, vaya a http: //whatever.localhost: 12345 / se ejecutará.
fuente