2011-01-28 18 views
54

Cuando trato de golpear a mi aplicación web en el puerto 8080 me sale el siguiente errorSolicitud incorrecta - no válida nombre de host IIS7

Solicitud incorrecta - no válida nombre de host
Error HTTP 400. La solicitud de nombre de host no es válido.

yo no sé ni por dónde empezar a diagnosticar este problema

Respuesta

55

¿verificó si la unión es IIS? (inetmgr.exe) Puede que no esté registrado para aceptar todos los nombres de host en 8080.

Por ejemplo, si lo configura para mysite.com:8080 y lo golpea en localhost: 8080, IIS obtendrá la solicitud pero no tener un enlace de nombre de host para que coincida, por lo que rechaza.

Fuera de eso, debe verificar los registros de IIS (C: \ inetpub \ logs \ wmsvC#) en el servidor y ver si está viendo su solicitud. Entonces sabrá si es un problema en su cliente o en el servidor mismo.

+0

bah. La secuencia de comandos de implementación que escribí utilizaba un nombre de host incorrecto. gracias Taylor. – burnt1ce

+2

En mi caso, tuve que agregar la siguiente línea en mi C: \ Windows \ System32 \ drivers \ etc \ hosts: "127.0.0.1 localhost" – chris

+0

@Taylor ¿cómo solucionar esto? ¿Qué tipo de enlace debemos escribir? Puede aprovechar más información –

2

Puede usar la herramienta Visual Studio 2005/2008/2010 CMD. Ejecútelo como administrador y escriba

aspnet_regiis -i 

Por fin puedo ejecutar mi aplicación con éxito.

3

no estoy seguro si esto era su problema, pero para cualquier persona que está tratando de acceder a su aplicación web de su máquina y tener este problema:

Asegúrese de que está conectando a 127.0.0.1 (también conocido como localhost) y no a su dirección IP externa.

La URL debe ser algo como http://localhost:8181/ o http://127.0.0.1:8181 y nohttp://YourExternalIPaddress:8181/.


Información adicional:
La razón por la que esto funciona es porque el firewall puede bloquear su propia petición. Puede ser un firewall en su sistema operativo y puede ser (lo habitual) su enrutador.

Cuando se conecta a su dirección IP externa, se conecta a usted desde Internet, como si fuera un extraño (o un hacker).
Sin embargo, cuando se conecta a su servidor local, se conecta localmente como usted mismo y obviamente el bloque no es necesario (& evitado por completo).

+0

Tengo este problema donde cuando se usa localhost funciona pero cuando se usa la dirección IP local de las máquinas (no lo hace). ¿Por qué dijiste específicamente que no usas http: // yourIPaddress? ¿Por qué no funciona esto? ¿Me gustaría entender? –

+0

Es absurdamente trivial que un "hacker" cambie el nombre de host utilizado para conectarse a un sitio web. – Arafangion

+0

@Arafangion ¿Cambiar dónde y obtener qué? – MasterMastic

0

Compruebe su archivo de hosts local (C: \ Windows \ System32 \ drivers \ etc \ hosts por ejemplo). En mi caso, lo había usado anteriormente para señalar una URL a un cuadro de desarrollo y luego haberlo olvidado. Cuando reutilicé la misma URL, seguí obteniendo una solicitud incorrecta (nombre de host no válido) porque el tráfico iba al servidor incorrecto.

27

Fwiw, si desea permitir que acaba de solicitudes dirigidas a cualquier nombre de host/ip entonces usted puede configurar su unión, así:

<binding protocol="http" bindingInformation="*:80:*" /> 

puedo utilizar esta unión para que pueda cargar una máquina virtual con IE6 y luego depurar mi aplicación.


EDIT: Durante el uso de IIS Express para depurar, la ubicación predeterminada para el archivo de configuración de esta opción es

C:\Users\{User}\Documents\IISExpress\config\applicationhost.config 
1

Tengo este error cuando traté de llamar a un servicio web usando "localhost". Lo arreglé usando la IP real en su lugar (192.168 ...)

+0

Ganador. Este fue mi problema en Windows Server 2003. – Obsidian

17

This página de Microsoft describe cómo configurar el acceso a IIS Server Express desde otras computadoras en la red local.

En pocas palabras:

1) desde un símbolo del sistema con privilegios de administrador:

netsh http add urlacl url=http://[your ip address]:8181/ user=everyone 

2) En Firewall de Windows con seguridad avanzada, crear una nueva regla de entrada para el puerto 8181 para permitir conexiones externas

3) en applicationhost.config, en el nodo para su proyecto, añadir:

<binding protocol="http" bindingInformation="*:8181:[your ip address]" />

no añaden (como se sugirió en otra respuesta):

<binding protocol="http" bindingInformation="*:8181:*" />

El comodín por encima de unión rompió el acceso desde http://192.168.1.6:8181/

0

vi el mismo error después de usar MSDeploy a copiar la aplicación a un nuevo servidor. Resultó que los enlaces seguían usando la dirección IP del servidor anterior. Por lo tanto, vuelva a verificar la dirección IP en los enlaces IIS. (Parece obvio después del hecho, pero no se me ocurrió verificarlo).

7

Así que resolví esto yendo a mi sitio web en el Administrador de IIS y cambiando el nombre de host en enlaces de sitio de localhost a *. Empecé a trabajar de inmediato.

Site Bindings in IIS

3

No se olvide de unirse a la dirección IPv6, así! Estaba intentando agregar un sitio en 127.0.0.1 usando localhost y obtuve el error de solicitud incorrecta/nombre de host no válido. Cuando conecté localhost resolví :: 1 desde que IPv6 se activó, así que solo tuve que agregar el enlace adicional para solucionar el problema.

IIS Site Bindings

0

este slove mi problema:
(lo siento por mi mala Inglés)
1.) abierta cmd un adminstor y ejecutar comandos (sin los corchetes): netsh http add url = urlacl http://[ip dirección]: [puerto]/usuario = todos

2.) documents/iisexpress/config/applicationhost.config y en la carpeta del proyecto raíz en la carpeta (carpeta oculta) .vs/config/applicationhost.config es necesario agregar etiqueta de fila a "sitio":

3.) abra "administrador de servicios de información de internet (iis)", (si no lo encuentra: en serch en tasckbar escriba "Activar o desactivar características de Windows" y abra el resulet y marque la casilla de verificación "servicio de información de Internet" y su instalación que) pantalla izquierda, haga clic en nombre de computadora -> Sitios -> Sitio web predeterminado y luego haga clic en la pantalla de la derecha "Encuadernación", haga clic en Agregar botón para ver lo que necesita y presione OK.

4.) abra "Windows Firewall con seguridad avanzada", en la pantalla izquierda presione "Reglas de entrada" y luego presione en la pantalla derecha "Nueva regla ..." compruebe el puerto y presione Siguiente, marque TCP y su puerto y presione Luego, marque "Permitir la conexión" y presione Siguiente, marque todas las casillas de verificación y presione Siguiente, escriba el nombre y presione Terminar.

hecho.

0

Para Visual Studio 2017 y Visual Studio 2015, IIS Express configuración se almacena en el directorio oculto .vs y el camino es algo como esto .vs\config\applicationhost.config, Añadir vinculación, como a continuación funcionará

<bindings> 
    <binding protocol="http" bindingInformation="*:8802:localhost" /> 
    <binding protocol="http" bindingInformation="*:8802:127.0.0.1" /> 
</bindings> 
Cuestiones relacionadas