web-dev-qa-db-ja.com

IIS Express、ASP.NET Core-無効なURI:ホスト名を解析できませんでした

週末から戻って、ASP.NET Core Web APIであるWebプロジェクトのデバッグに行きました。エラーが発生し始めました:無効なURI:ホスト名を解析できませんでした。

私は新しいasp.netコアWeb APIプロジェクトを開始できます。それはうまくデバッグするので、このプロジェクトの構成で何かが確実にわかります。何か案は?

ジェームズ

12
James Scott

同じ問題がありました。 VSを閉じ、.vsフォルダを削除し、プロジェクトをもう一度開きます。再構築して実行。それは役立つはずです。

13
Szubi

多くの人が私のコメントが役に立ったと思ったので、この回答を投稿します。私を突っついてくれて@joshcomleyに感謝します。

うまくいけば、この答えが誰かを助けるでしょう:

  1. ソリューションフォルダーで.vsという名前のサブフォルダーを見つけます(注、このフォルダーには非表示の属性があるため、ファイルエクスプローラーにはデフォルトでは表示されません)。
  2. .vs/config/applicationhost.configファイルを開く
  3. ファイル内で<site name="<Your_Web_Site_Name>" ....のような要素を見つけます。このようないくつかの要素を持つことができます。 <Your_Web_Site_Name>がサイトの名前と一致するものを選択する必要があります
  4. <site要素内で、次のような子要素を見つけます。

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

そしてそれを次のものに置き換えます:

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

  1. ソリューションを再構築してWebサイトを実行する

ノート:

  • ポート番号8080が例として示されています。 Webサイトで実際に使用するポートを割り当てる必要があります。
  • この修正はIISExpressでホストされているWebサイトで機能します。また、Invalid URI: The hostname could not be parsedなどのエラーメッセージを回避できます。
  • あなたのウェブサイトが[〜#〜] iis [〜#〜]を使用している場合、バインディングを次の行に置き換えてみてください:<binding protocol="http" bindingInformation="*:8080:*" />。そして、この変更後にiisresetを実行します。
9
VeganHunter

Jakubの回答は、Visual Studioがapplicationhost.configを再生成するため、問題を解決します。私の場合、エラーは_<binding>_タグの値を解析できないことを示していました。私は次のことをしました:_<binding protocol="http" bindingInformation="*:5000:*" />_これは再生成すると次のようになります:_<binding protocol="http" bindingInformation="*:5000:localhost" />_ファイルは「.vs」フォルダーの「config」サブフォルダー内にあり、ディレクトリ全体を削除する代わりに、単に修正できます/ <binding>_タグを解析可能な値に復元します。

Edit:per @ VeganHunter's comment 、_*_ is not a validhostname。すべてのホスト名にバインドする場合は、ホストを空白のままにします。例:_*:80:_の代わりに_*:80:*_は、「すべてのホスト名について、ポート80上のすべてのネットワークインターフェイス/ IP」を意味します。

4
QuickDanger

このエラーは、サイトのbindingInformationの形式が正しくないことを示しています。

BindingInformationの値は3つの部分で構成されます。

ip:port:Host

バインディングの形式とその結果は次のとおりです。

<!-- 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. -->

上記のすべてのバインディングを使用して、プロトコルをhttpsに設定し、SSL経由でのみサイトにアクセスできるようにすることができます。

1
chaosifier

同様の問題が発生し、Visual Studioを管理者モードで実行すると問題が解決しました。

0
Ayush