web-dev-qa-db-ja.com

静的コンテンツが要求されるとIIS7が空白を返す

IIS7がインストールされているWindows 7 Home Premiumエディションのすべてのドライバーが正しくロードされた(なぜHomeエディションなのかは問わないでください)EEEPCのデモマシンを構成しようとしています。

デモ対象のアプリケーションをASP.NET MVCサイトであるマシンに展開し、コンソールを介してWebサイトを追加し、アプリプールを追加しました。アプリプールはNetworkServiceとして実行され、ゲストはIUSRとして認証されます。

NetworkServiceに変更権限を追加し、WebサイトのフォルダーとそのコンテンツにIUSRの読み取りおよび実行権限を追加しました。

Webのルートに到達したら、次のように言います http://example.com/ Webサイトから適切なHTMLをレンダリングします(つまり、アプリケーションは機能します)が、すべての静的コンテンツが返されるという問題があります。ブランク。

なぜこれが起こっているのかわかりません。 404または500のエラーページはなく、静的コンテンツにアクセスしたときのプレーンな空の応答だけです。すべてのASP.NETで生成されたコンテンツは正常に動作します(ただし、すべてのCSSおよび画像が読み込まれないため、少し奇妙です)

IIS7管理コンソールは私にとって非常に混乱しており、明日までにマシンが必要になります。

14
chakrit
25
MattB

私の場合、サーバーの役割は既にインストールされていますが、静的ハンドラーは、ハンドラーマッピングが1つしかない簡単なテストサイトでも空白ページを提供していました。

修正は、リクエスト制限「リクエストがマップされた場合のみハンドラーを呼び出す」を有効にすることでした。 「ファイル」または「ファイルまたはディレクトリ」に設定するかどうかは関係ありません。チェックボックスが有効になっている限り、機能します。

 enter image description here

それでも解決しない場合は、空白ページにつながる別のことは、[リクエストパス]セクションでpublicまたはpublic/*のようなパスを指定しようとすることです。前者は受け入れられるべきですが、後者は単純に間違っていますが、代わりに空白のページになります。解決策は、ハンドラマッピングを<location path='public'>セクションにラップし、「リクエストパス」設定に*を指定することです。または、IISマネージャーで、サイトを展開し、最初にフォルダーを選択しますその後ハンドラーマッピングを編集します。

2
RomanSt

@MattBが示唆したように、「静的コンテンツ」機能を有効にしていませんが、それは問題の一部にすぎません。

「静的コンテンツ」機能を追加しましたが、それでも問題は解決しないので、デフォルトのMvcHttpHandlerをハンドラーマッピングリストから削除して、どういうわけか問題が解決します...問題は、MvcHttpHandlerがリクエストの前にインターセプトしていたことです。 StaticFileHandler、

参考までに、「静的コンテンツ」をインストールした後、次のことも確認してください...

  1. インターネットインフォメーションサービスマネージャーで、Webサイトをクリックします。
  2. 「ハンドラーマッピング」機能をダブルクリックします。
  3. 右側(アクションパネル)に、「順序付きリストの表示...」というタイトルのリンクが表示されたら、それをクリックします。
  4. 次に、モジュールが各要求に一致する順序を見つけます。順序が意味をなすことを確認してください。

私の場合、MvcHttpHandlerが何よりも優先されていました。AXDファイルハンドラー、TRACEハンドラー、OPTIONSハンドラー、および静的コンテンツがショットを取得するため、リストの一番下に移動することで問題を解決しました。最初にリクエストを処理するとき。

これが誰かが同じ問題を探しているのに役立つことを願っています:-)

1
chakrit