Tengo una aplicación ASP.NET MVC3 de prueba desarrollada en VS2012. Cuando comienzo a depurar, se accede a la aplicación desde la máquina host a través de la solicitud a http://localhost:<portnumber>
. Pero si trato de acceder a la misma aplicación desde la máquina remota en la intranet a través del http://<ip>:<portnumber>
, obtengo HTTP error 400: Bad request. Invalid Host Name.
En cuanto se ejecuta en IIS Express, cualquier configuración del servidor es inaccesible.
¿Hay alguna forma de solucionar esto?
Respuestas:
Actualizar
Hice un video que describe mejor el proceso, https://youtu.be/5ZqDuvTqQVs
Si está utilizando Visual Studio 2013 o superior, asegúrese de ejecutarlo como administrador para que esto funcione.
Abra el
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
archivo (en VS2015 puede ser$(solutionDir)\.vs\config\applicationhost.config
). Dentro deberías ver algo como esto:<site name="WebSite1" id="1" serverAutoStart="true"> <application path="/"> <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" /> </application> <bindings> <binding protocol="http" bindingInformation="*:8080:localhost" /> </bindings> </site>
Cambie
bindingInformation=":8080:localhost"
abindingInformation="*:8080:*"
(el número de puerto, 8080 en mi caso, será diferente).Nota: Si no funciona, pruebe con
bindingInformation="*:8080:
el asterisco que se puede quitar.Luego, asegúrese de que su firewall permita conexiones entrantes en ese puerto. Es posible que deba reiniciar el sistema o al menos Visual Studio para que IISExpress vuelva a cargar el archivo de configuración.
Si esto no funciona, eche un vistazo a esta respuesta: https://stackoverflow.com/a/5186680/985284
fuente
<site name="Website1(1)" id="2" serverAutoStart="true">
, todavía no puedo acceder al sitio web desde otro compuer.bindingInformation="*:8080:*"
no funcionó para mí y resultó en el problema que estaba experimentando @ Y.Ecarri. Lo que finalmente terminó trabajando estaba bajando los asteriscos:bindingInformation=":8080:"
. Chico, esto me volvió loco, espero que ayude a alguien.bindingInformation=":8080:"
(sin *)VisualStudio 2015 No administrador
En el directorio de su solución, en el archivo
.vs\config\applicationHost.config
cambie la línea<binding protocol="http" bindingInformation="*:44302:localhost" />
a
<binding protocol="http" bindingInformation=":44302:" />
(donde 44302 es su puerto)
Desde un símbolo del sistema de administración:
yo. Permitir que los no administradores se vinculen al puerto
netsh http add urlacl url=http://*:44302/ user=Everyone
ii. Permitir a través del firewall
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=44302 dir=in action=allow
fuente
Excepto para modificar el archivo de configuración iisexpress, a veces también necesita ejecutar el comando como se muestra a continuación.
netsh http add urlacl url = http: // *: 49419 / user = Everyone
fuente
Cómo evitar ejecutar Visual Studio como administrador
Con la respuesta de Garret y @ shangkeyun, puede lograr conectarse al sitio web en ejecución sin necesidad de ejecutar Visual Studio como usuario administrador:
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
name=MySiteName
<binding>
elemento existente en la<bindings>
sección. Ahora debería tener dos líneas conbinding
.Ahora debería verse así, asumiendo que el puerto es
12345
:<binding protocol="http" bindingInformation="*:12345:localhost" /> <binding protocol="http" bindingInformation="*:12345:" />
Permitir que los no administradores se vinculen al puerto
netsh http add urlacl url=http://*:12345/ user=Everyone
EDITAR 2019: gregmac agregó un paso para incluir la instancia de VS en la lista blanca. Nunca necesité esto, pero lo enumeré de todos modos:
netsh advfirewall firewall add rule name="IISExpress visualstudio app" protocol=tcp localport=12345 dir=in action=allow
fuente
Como no puedo agregar un comentario a la publicación de @Garret Fogerlie y en respuesta al problema de los comentaristas (@ Y.Ecarri y @SamuelEdwinWard), seguí lo que sugirió Garret, usando Visual Studio 2013, ejecutándolo en modo Admin y cambiando el
application.config
archivo.Después de iniciar la depuración y ver que recibía el mismo mensaje de error, volví
application.config
y vi que se había creado una nueva entrada para mi sitio al igual que el problema de Y.Ecarri.Así que dejé de depurar, mantuve mi solución abierta en Visual Studio y volví a editar el
application.config
archivo para la nueva entrada. También simplemente eliminé las*
canciones y porlocalhost
completo, por lo que tenía lo siguiente para la nueva entrada:<binding protocol="https" bindingInformation=":44300:" />
fuente
Algunos de ustedes pueden pasar mucho tiempo modificando y probando usando su directorio% USERPROFILE%. Si está ejecutando la depuración VS , use $ (solutionDir) .vs \ config \ applicationhost.config
fuente
Gracias a byteit:
Vaya a applicationhost.config en Documents / IISExpress / config
busque la entrada para el sitio en particular en el que está trabajando:
añadir:
<binding protocol="http" bindingInformation="*:<your site port>:*" />
frente a lo existente
<binding protocol="http" bindingInformation="*:<your site port>:localhost" />
Para lograr la solución sin que VS2013 cree una nueva entrada xml en el sitio web cuando reinicie. Deberá ejecutar como administrador.
fuente
Después de las configuraciones anteriores, tuve que ejecutar Visual Studio en modo administrativo.
fuente
Esto es lo que funcionó para mí:
C:\VSProjects
en mi caso)Directory Browsing
de la lista de opciones. En el lado derecho hay unEnable
botón. Pinchalo.Ahora puedo acceder a mi carpeta y al contenedor del proyecto en la red a través de
mypcname\VSProjects\myProj\outputBinViewer
.fuente
Tenía un problema muy similar al depurar en Visual Studio Code , lo resolví agregando:
"env": { // ... "ASPNETCORE_URLS": "http://*:5000" // change to the port you are using // ... },
.. para lanzar.json
Aparentemente, de forma predeterminada enlaza el protocolo http a 'localhost: 5000', por lo que funciona con localhost pero no con la dirección IP , ni de forma remota ni local.
Si está intentando alcanzar un punto de interrupción mediante una solicitud procedente de una computadora diferente, no olvide verificar la configuración de su firewall (y / o antivirus)
espero que esto ayude
fuente