不正な要求-無効なホスト名IIS7


86

ポート8080でWebアプリをヒットしようとすると、次のエラーが発生します

不正な要求-無効なホスト名
HTTPエラー400。要求のホスト名が無効です。

この問題の診断をどこから始めればよいのかさえわかりません

回答:


74

バインディングがIISであることを確認しましたか?(inetmgr.exe)8080のすべてのホスト名を受け入れるように登録されていない可能性があります。

たとえば、mysite.com:8080に設定し、localhost:8080でヒットした場合、IISは要求を取得しますが、一致するホスト名バインディングがないため、拒否されます。

それ以外では、サーバー上のIISログ(C:\ inetpub \ logs \ wmsvc#)をチェックして、要求が表示されているかどうかを確認する必要があります。次に、それがクライアントに問題があるのか​​、サーバー自体に問題があるのか​​がわかります。


2
私の場合、C:\ Windows \ System32 \ drivers \ etc \ hostsに次の行を追加する必要がありました: "127.0.0.1 localhost"
chris

4
IISマネージャーのバインディングはどこで構成しますか?
スティーブスミス

30

FWIW、任意のホスト名/ IPに向けられたリクエストのみを許可したい場合は、次のようにバインディングを設定できます。

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

このバインディングを使用して、IE6でVMをロードし、アプリケーションをデバッグできるようにします。


編集:IIS Expressを使用してデバッグしている間、このオプションの構成ファイルのデフォルトの場所は

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

1
また、Conveyorと呼ばれる無料のVS拡張機能を使用してIIS Expressをリモート要求で動作させることもできます(構成の変更は含まれません)。[ツール]-> [拡張機能...]を使用して入手するか、marketplace.visualstudio.com /で…
ジムWは

25

Microsoftによるこのページでは、ローカルネットワーク上の他のコンピューターからIIS ServerExpressへのアクセスを設定する方法について説明します。

手短に:

1)管理者権限を持つコマンドプロンプトから:

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

2)セキュリティが強化されたWindowsファイアウォールで、ポート8181の新しい受信ルールを作成して、外部接続を許可します

3)applicationhost.configのプロジェクトのノードに、以下を追加します。

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

追加しないでください(別の回答で提案されているように):

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

上記のワイルドカードバインディングにより、 http://192.168.1.6:8181/


4
また、管理者権限でVisual Studioを実行する必要があります。そうしないと、IISExpressにバインドできません。管理者としての完成テストは、あなたがapplicationHost.configファイルから余分なエントリを削除し、使用してHTTP.sysのエントリを削除することで、前の手順を逆にする必要があります場合は: netsh http delete urlacl url=http://[your ip address]:8181/
SteveC

1
コンピュータが別の言語に設定されている場合、「user = everyone」は別の言語である必要があります。フランス語ではuser = "Toutlemonde"です。この回答を参照してください:stackoverflow.com/a/18856394/1317559
Yster

24

そこで、IISマネージャーで自分のWebサイトにアクセスし、サイトバインディングのホスト名をlocalhostから*に変更することでこれを解決しました。すぐに働き始めました。

IISでのサイトバインディング


完璧!Laravelサイトの実行に使用されるAWSインスタンスで働いていた
Vishnoo Rath 2018

これにより、ローカルホストでは機能するがリモートIPでは機能しないasp.netコアの問題が修正されました。ありがとうございます。
フィリップ

私の場合はうまくいきました。私は100以上のサイトをホストしていましたが。初めて間違え、ファイアウォールルールやその他のソリューションで見つけることができませんでした。
KetanKotak19年

9

以下の場合Visual Studio 2017Visual Studio 2015IIS Express設定が隠さに格納され.vsたディレクトリとパスは、このようなものである.vs\config\applicationhost.config、意志の作業以下のように結合追加

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

構文:https//docs.microsoft.com/en-us/dotnet/api/microsoft.web.administration.binding.bindinginformation?view = iis-dotnet


2
この方法を使用している人にとって、正しいバインディング情報テンプレートは次のとおりであることに注意することは重要ではありません:ip address:port:hostheader。だから、正しい実装は次のとおりです。 <bindings> <binding protocol="http" bindingInformation="localhost:8802:*" /> <binding protocol="http" bindingInformation="127.0.0.1:8802:*"/> </bindings>
Lionnel Afangbedjee

1
.vsフォルダーは、プロジェクトのルートフォルダー内のフォルダーです。そのapplicationhost.configで、タグ<site name = "[YourService / ProjectName]>を探し、そこで<bindings>タグを見つけます。
NexX19年

4

IPv6アドレスにもバインドすることを忘れないでください!ローカルホストを使用して127.0.0.1にサイトを追加しようとしましたが、不正な要求/無効なホスト名エラーが発生しました。localhostにpingを実行すると、IPv6が有効になっているため、:: 1に解決されたため、問題を修正するためにバインディングを追加する必要がありました。

IISサイトバインディング


4

これは私の問題を解決しました(私の悪い英語で申し訳ありません):

  1. 管理者としてcmdを開き、コマンドを実行します(角括弧なし):
    netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone

  2. documents/iisexpress/config/applicationhost.config(隠し)フォルダ内のルートプロジェクトフォルダ内および.vs/config/applicationhost.config「サイト」タグに行を追加する必要があります:
    <binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />

  3. 「インターネットインフォメーションサービス(iis)マネージャー」を開きます(
    見つけるには:タスクバーの検索で「ウィンドウ機能をオンまたはオフにする」と入力して結果を開き、[インターネットインフォメーションサービス]チェックボックスをオンにしてインストールします):

    1. 左側の画面で、[コンピューター名]-> [サイト]-> [デフォルトのWebサイト]をクリックします。
    2. 次に、右画面の「バインド」をクリックします
    3. [追加]ボタンをクリックします
    4. 必要なものを書いて「OK」を押してください。
  4. 「セキュリティが強化されたWindowsファイアウォール」を開き、

    1. 左側の画面で[インバウンドルール]を押してから
    2. 右画面の「新しいルール...」を押します
    3. ポートを確認し、[次へ]を押します。
    4. TCPとポートを確認し、[次へ]を押します。
    5. 「接続を許可する」にチェックを入れ、「次へ」を押します。
    6. すべてのチェックボックスをオンにして、[次へ]を押します。
    7. 名前を入力して[完了]を押します。
  5. 完了しました。


3

これがあなたの問題であったかどうかはわかりませんが、自分のマシンから自分のWebアプリケーションにアクセスしようとして、この問題を抱えている人にとっては、次のようになります。

外部IPアドレスではなく127.0.0.1(別名localhost)に接続していることを確認してください。

あなたのURLは何かのようにあるべきhttp://localhost:8181/か、http://127.0.0.1:8181そしてません http://YourExternalIPaddress:8181/


追加情報:
これが機能する理由は、ファイアウォールが独自の要求をブロックする可能性があるためです。OSのファイアウォールである場合もあれば、(通常の)ルーターである場合もあります。

外部IPアドレスに接続すると、見知らぬ人(またはハッカー)であるかのように、インターネットから接続します。
ただし、ローカルホストに接続するときは、自分自身としてローカルに接続するため、ブロックは明らかに必要ありません(完全に回避されます)。


localhostを使用すると機能するが、マシンのローカルIPアドレスを使用する場合(機能しない)にこの問題が発生します。なぜあなたはあなたのIPアドレスを使わないように特に言ったのですか-なぜこれが機能しないのですか-私は理解したいですか?
独自のコード2013

1
「ハッカー」がWebサイトへの接続に使用するホスト名を変更するのは、ばかげて些細なことです。
アラファンギオン2016

@Arafangionどこで変更して何を得る?
MasterMastic 2016

@MasterMastic:たとえば、Linuxでは、/ etc /hosts.confファイルを編集します。Windowsには同等のものがあります。または、さらに簡単に、報告するホスト名をcurlまたはwgetに指示するだけです。ここでは、インターネットからの要求をブロックするために「ホスト名」に依存しているようです。したがって、ハッカーが取得するのは、明らかに「保護」メカニズムをバイパスすることによって取得する必要があるものです。IISはまだポートにバインドしているようです。正しい修正は、そもそも外部からアクセス可能なポートにバインドしないことです。
アラファンギオン2016

@Arafangionええ、でもそれはローカルリダイレクトです。ここでのポイントはではなくlocalhost、それが参照しているものです(127.0.0.1)。私が言っているのは、外部から見えるIPではなく、それに接続することだけです。ローカルホストに依存することはなく、同義語として使用されるだけです。これを明確にするために、回答を編集します。
MasterMastic 2016

2

Visual Studio 2005/2008 / 2010CMDツールを使用できます。管理者として実行し、書き込みます

aspnet_regiis -i

ついにアプリを正常に実行できるようになりました。


2

ローカルサーバーで作業している場合、またはドメイン名を取得していない場合は、[ホスト名:]フィールドを削除してください。 ここに画像の説明を入力してください


1

ローカルホストファイル(C:\ Windows \ System32 \ drivers \ etc \ hostsなど)を確認します。私の場合、以前はこれを使用してURLを開発ボックスにポイントしていましたが、それを忘れていました。その後、同じURLを再利用すると、トラフィックが間違ったサーバーに送信されていたため、不正な要求(無効なホスト名)が発生し続けました。


1

「localhost」を使用してWebサービスを呼び出そうとすると、このエラーが発生しました。代わりに実際のIPを使用して修正しました(192.168 ...)


勝者。これは、Windows Server 2003で私の問題だった
DreamTeK

0

msdeployを使用してアプリケーションを新しいサーバーにコピーした後、同じエラーが発生しました。バインディングはまだ前のサーバーのIPアドレスを使用していることが判明しました。したがって、IISバインディングのIPアドレスを再確認してください。(事後に明らかなようですが、それをチェックするために私にはすぐには起こりませんでした)。


0

提供している正確なURLを再確認してください。ASP.NETで定義されたルートプレフィックスを見逃したため、リクエストのルーティング先がわからなかったときに、このエラーが発生しました。


0

IISがポートをリッスンしていることを確認してください。

私の場合、これが問題でした。そのため、ポートを8083のようなものに変更する必要があり、この問題は解決しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.