web-dev-qa-db-fra.com

IIS Express, ASP.NET Core - URI non valide: le nom d'hôte n'a pas pu être analysé

De retour de mon week-end, je suis allé déboguer mon projet Web qui est une API Web ASP.NET Core. Il a commencé à me donner une erreur: URI non valide: le nom d'hôte n'a pas pu être analysé.

Je peux démarrer un nouveau projet d'api web core asp.net et il débogue bien, donc je suis sûr que c'est quelque chose avec ma configuration pour ce projet. Des idées?

James

12
James Scott

J'ai eu le même problème. Fermez simplement VS, supprimez le dossier .vs, ouvrez à nouveau le projet. Reconstruire et exécuter. Ça devrait aider.

13
Szubi

Je poste cette réponse car beaucoup de gens ont trouvé mon commentaire utile. Merci à @joshcomley de m'avoir piqué.

J'espère que cette réponse aidera quelqu'un:

  1. Dans votre dossier de solution, recherchez un sous-dossier nommé .vs (notez que ce dossier a un attribut caché, donc l'explorateur de fichiers ne l'affiche pas par défaut)
  2. Ouvert .vs/config/applicationhost.config fichier
  3. À l'intérieur de l'élément de recherche de fichier comme <site name="<Your_Web_Site_Name>" ..... Vous pouvez avoir plusieurs éléments comme celui-ci. Vous devez en choisir un où <Your_Web_Site_Name> correspond au nom de votre site
  4. À l'intérieur <site élément rechercher un élément enfant comme:

<binding protocol="http" bindingInformation=":8080:localhost" />

et remplacez-le par:

<binding protocol="http" bindingInformation=":8080:" />

  1. Reconstruire la solution et exécuter le site Web

Remarques:

  • Le numéro de port 8080 est donné à titre d'exemple. Vous devez attribuer le port que vous utilisez réellement pour le site Web.
  • Ce correctif fonctionne pour les sites Web hébergés dans IISExpress. Il permet également d'éviter les messages d'erreur comme Invalid URI: The hostname could not be parsed.
  • Si votre site Web utilise IIS , vous pouvez essayer de remplacer la liaison par cette ligne: <binding protocol="http" bindingInformation="*:8080:*" />. Et faites iisreset après ce changement.
9
VeganHunter

La réponse de Jakub résout le problème car elle entraîne la régénération de applicationhost.config par Visual Studio. Dans mon cas, l'erreur disait que la valeur de la balise <binding> Ne pouvait pas être analysée. J'avais ce qui suit: <binding protocol="http" bindingInformation="*:5000:*" /> Qui, une fois régénéré, ressemblait à ceci: <binding protocol="http" bindingInformation="*:5000:localhost" /> Le fichier se trouve dans le sous-dossier "config" du dossier ".vs", et au lieu de supprimer tout le répertoire, vous pouvez il suffit de corriger/restaurer votre balise <binding> à une valeur qui peut être analysée.

Edit : per @ VeganHunter's comment , * N'est pas valide hostname. Si vous voulez qu'il soit lié à tous les noms d'hôtes, laissez simplement l'hôte vide. Ex: *:80: Au lieu de *:80:* Signifie "Toutes les interfaces réseau/IP, sur le port 80, pour tous les noms d'hôtes".

4
QuickDanger

Cette erreur indique que vos informations de liaison pour le site ne sont pas au format correct.

La valeur de bindingInformation se compose de trois parties.

ip:port:Host

Voici quelques formats de liaisons et leur résultat:

<!-- Configures the site with a hostname of "www.test.com" on port 80 for the IP address of 192.168.1.10. -->
<binding protocol="http" bindingInformation="192.168.1.10:80:www.test.com" />

<!-- Configures the site with a hostname of "localhost" on port 80 for the IP address of 192.168.1.10. -->
<binding protocol="http" bindingInformation="192.168.1.10:80:localhost" />

<!-- Configures the site without a hostname and IP address on port 80. You'd use this setting to make your site directly accessible via any address that the system has, including the localhost address at 127.0.0.1, as well as any and all configured IP addresses. -->
<binding protocol="http" bindingInformation=":80:" />

<binding protocol="https" bindingInformation="*:443:" />
<!-- Configures HTTPS bindings for all IP addresses over port 443. -->

Avec toutes les liaisons ci-dessus, vous pouvez définir le protocole sur https pour rendre votre site accessible uniquement via SSL.

1
chaosifier

J'obtenais un problème similaire et l'exécution de Visual Studio en mode Administrateur a résolu le problème pour moi.

0
Ayush