css、js、画像ファイルのリクエストは、ASP.NET パイプラインを介して処理されています。IIS はデフォルトでこれを回避していると思っていましたが、Application_AuthenticateRequest
ブレークポイントにリクエストが表示され、それらのリクエストを実際に認証する必要はありません。この動作を変更するための相反するアプローチを見てきました - これを行う最善の方法は何ですか?
4 に答える
web.config
ここで推測しているのですが、ファイルに次の設定が構成されていると思われます。
<modules runAllManagedModulesForAllRequests="true">
これは、静的コンテンツのリクエストを含むすべてのリクエストがパイプラインにヒットしていることを意味します。
この設定を次のように変更します。
<modules runAllManagedModulesForAllRequests="false">
これは、アプリケーションがASP.NET4.0およびMVC3で実行されていることを前提としています。
これを機能させるには、 KB980368(再起動が必要)またはWindows 2008R2 SP1(この修正プログラムを含む)をインストールする必要があります。この理由は、この優れた記事で説明されています。
これをweb.configに追加することになりました。すべての静的ファイルがこれらのフォルダーに存在することがわかっているので、私のニーズには問題なく機能します。
<location path="scripts">
<system.web>
<authentication mode="None" />
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="styles">
<system.web>
<authentication mode="None" />
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="images">
<system.web>
<authentication mode="None" />
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
Visual Studio 開発サーバーが有効になっている VS2012 /MVC3 では、RAMMFAR=false は効果がありません。静的ファイルに対する各要求は、引き続き Application_BeginRequest イベント ハンドラーにヒットします。
IIS Express に切り替えたところ、必要な機能が表示されました。
IIS 構成または web.config のどこかに、これらのファイルを ASP.Net アプリケーションにマップするためのハンドラー マッピングが設定されています。
web.config を削除してみて、ASP.Net を使用せずに IIS 内からこれらのファイル タイプを参照できるかどうかを確認してください。それが失敗した場合は、それが web.config であることがわかります。それ以外の場合は、IIS の設定を確認する必要があります。
ステップ 2 - web.configs を元に戻し、サイトを削除して再作成します - 同じ問題ですか? これは、IIS のルートにある設定であり、すべてのサイトに適用されることを意味します。ここでハンドラー マッピングを確認してください。