web-dev-qa-db-fra.com

Requête incorrecte - Nom d'hôte non valide IIS7

Lorsque j'essaie d'appuyer sur mon application Web sur le port 8080, le message d'erreur suivant s'affiche:

Requête incorrecte - Nom d'hôte non valide
Erreur HTTP 400. Le nom d'hôte de la demande n'est pas valide.

Je ne sais même pas par où commencer pour diagnostiquer ce problème

64
burnt1ce

Avez-vous vérifié la liaison est IIS? (inetmgr.exe) L'acceptation de tous les noms d'hôte sur 8080 n'est peut-être pas enregistrée.

Par exemple, si vous le configurez pour mysite.com:8080 et que vous le frappez sur localhost: 8080, IIS obtiendra la demande mais ne pourra pas associer un nom d’hôte afin qu’il soit rejeté.

En dehors de cela, vous devriez vérifier les journaux IIS (C:\inetpub\logs\wmsvc #) sur le serveur et voir si vous voyez votre demande. Ensuite, vous saurez s'il s'agit d'un problème sur votre client ou sur le serveur lui-même.

61
Taylor Bird

FWIW, si vous souhaitez simplement autoriser les demandes dirigées vers un nom d’hôte/adresse IP, vous pouvez définir votre liaison de la manière suivante:

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

J'utilise cette liaison pour pouvoir charger une VM avec IE6, puis déboguer mon application.


EDIT: lors du débogage avec IIS Express, l’emplacement par défaut du fichier de configuration de cette option est

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

This page de Microsoft décrit comment configurer l'accès à IIS Server Express à partir d'autres ordinateurs du réseau local.

En un mot:

1) à partir d'une invite de commande avec les privilèges d'administrateur:

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

2) Dans le Pare-feu Windows avec sécurité avancée, créez une nouvelle règle entrante pour le port 8181 afin d’autoriser les connexions externes.

3) Dans applicationhost.config, dans le nœud de votre projet, ajoutez:

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

N'ajoutez PAS (comme suggéré dans une autre réponse):

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

La liaison générique ci-dessus a interrompu mon accès à partir de http://192.168.1.6:8181/

21
Erwin

J'ai donc résolu ce problème en accédant à mon site Web dans IIS Manager et en modifiant le nom d'hôte dans les liaisons de sites de localhost à *. Commencé à travailler immédiatement. 

 Site Bindings in IIS

16
SINGULARITY

N'oubliez pas de vous connecter également à l'adresse IPv6! J'essayais d'ajouter un site sur 127.0.0.1 en utilisant localhost et j'ai eu l'erreur de demande/nom d'hôte invalide. Lorsque j'ai envoyé une requête ping à localhost, il s'est résolu à: 1, car IPv6 était activé;.

 IIS Site Bindings

4
Lucifer Sam

Pour Visual Studio 2017 et Visual Studio 2015, les paramètres IIS Express sont stockés dans le répertoire caché .vs et le chemin d'accès ressemble à ceci .vs\config\applicationhost.config, l'ajout d'une liaison comme ci-dessous fonctionnera

<bindings>
    <binding protocol="http" bindingInformation="*:8802:localhost" />
    <binding protocol="http" bindingInformation="*:8802:127.0.0.1" />
</bindings>
3
imgen

Je ne sais pas si c'était votre problème, mais pour quiconque tente d'accéder à son application Web depuis sa machine et qui a ce problème:

Assurez-vous de vous connecter à 127.0.0.1 (a.k.a localhost) et non à votre adresse IP externe.

Votre URL devrait être quelque chose comme http://localhost:8181/ ou http://127.0.0.1:8181 et pas http://YourExternalIPaddress:8181/.


Information additionnelle:
Cela fonctionne parce que votre pare-feu peut bloquer votre propre demande. Il peut s'agir d'un pare-feu sur votre système d'exploitation et de votre routeur (comme d'habitude).

Lorsque vous vous connectez à votre adresse IP externe, vous vous connectez depuis Internet, comme si vous étiez un étranger (ou un pirate informatique).
Cependant, lorsque vous vous connectez à votre hôte local, vous vous connectez localement comme vous-même et le bloc n’est évidemment pas nécessaire (et tout à fait évité).

3
MasterMastic

Vous pouvez utiliser l'outil CMD de Visual Studio 2005/2008/2010. Exécutez-le en tant qu'administrateur et écrivez

aspnet_regiis -i

Enfin, je peux exécuter mon application avec succès.

2
FrankFan

ce slove mon problème:
(Désolé pour mon mauvais anglais)
1.) Ouvrez cmd un adminstor et exécutez la commande (sans les crochets): netsh http add urlacl url = http: // [ip adresse]: [port]/utilisateur = tout le monde 

2.) documents/iisexpress/config/applicationhost.config et dans votre dossier de projet racine dans le dossier (dossier caché) .vs/config/applicationhost.config, vous devez ajouter une ligne à la balise "site": 

3.) ouvrez "Gestionnaire des services d’information Internet (IIS)", (s’il ne le trouve pas: écrivez "Activer ou désactiver les fonctionnalités de la fenêtre" et ouvrez resulet, puis cochez la case "Service d’information Internet" et installez-la ) dans l’écran de gauche, cliquez sur nom-ordinateur -> Sites -> Site Web par défaut, puis cliquez sur dans l’écran de droite "Liaison", cliquez sur le bouton Ajouter pour définir vos besoins, puis appuyez sur OK.

4.) ouvrez "Pare-feu Windows avec sécurité avancée", dans l'écran de gauche, appuyez sur "Règles entrantes", puis dans l'écran de droite "Nouvelle règle ...", vérifiez le port et appuyez sur Suivant, vérifiez TCP et votre port, puis appuyez sur Ensuite, cochez la case "Autoriser la connexion" et appuyez sur Suivant, cochez toutes les cases, puis appuyez sur Suivant, nom de réseau et appuyez sur Terminer.

terminé. 

2
izik f

J'ai eu cette erreur lorsque j'ai essayé d'appeler un service Web en utilisant "localhost". Je l'ai corrigé en utilisant l'adresse IP réelle à la place (192.168 ...)

1
Cosmin

J'ai vu la même erreur après avoir utilisé msdeploy pour copier l'application sur un nouveau serveur. Il s'est avéré que les liaisons utilisaient toujours l'adresse IP du serveur précédent. Vérifiez donc l’adresse IP dans les liaisons IIS. (Cela semble évident après le fait, mais je ne me suis pas immédiatement demandé de le vérifier).

0
dan9298

Vérifiez votre fichier d'hôtes local (C:\Windows\System32\drivers\etc\hosts par exemple). Dans mon cas, j'avais déjà utilisé cela pour pointer une URL vers une boîte de dev, puis je l'avais oublié. Quand j'ai ensuite réutilisé la même URL, j'ai continué à recevoir des demandes incorrectes (nom d'hôte non valide) car le trafic était acheminé vers le mauvais serveur.

0
robaker

Vérifiez bien l'URL exacte que vous fournissez ... J'ai vu cette erreur lorsque j'ai raté le préfixe de route défini dans ASP.NET, de sorte qu'il ne savait pas où acheminer la demande.

0
Taran