ASP.NET MVCルーティングと静的データ(つまり、画像、スクリプトなど)

StackOverflow https://stackoverflow.com/questions/2681447

質問

静的リソース用のASP.NET MVC1(または2)Webアプリにリソースを要求した場合、たとえば...画像またはJavaScriptファイル、またはCSSファイル... .NETフレームワークは試してみてくださいリクエストがルートリストと一致している場合...そして最終的にコントローラーが見つかりませんか?

例えば。

リソース:/content/images/foo.png

このリクエストは私のルートリストを通過しますか?この要求にコントローラー /アクションを一致させず、そのパスを直接試みますか?

役に立ちましたか?

解決

既存のファイルをマップするかどうかを選択できますか RouteCollection.RouteExistingFiles 財産

ASP.NETルーティングが既存のファイルに一致するURLを処理する必要があるかどうかを示す値を取得または設定します。

これが私が読んだものです ここ:

ただし、ルーティングシステムはまだファイルシステムをチェックして、着信URLがファイルまたはディスクと一致するかどうかを確認します。その場合、ルーティングはリクエストを無視します(URLも一致する可能性のあるルートエントリをバイパスします)。直接提供されます。これは、画像、CSS、JavaScriptファイルなどの静的ファイルに非常に便利です。プロジェクト(たとえば、 /contentまたは /scriptフォルダー)にそれらを保持し、まるでルーティングをまったく使用していないかのように、それらを直接参照して提供できます。ファイルは本当にディスクに存在するため、ルーティング構成よりも優先されます。

代わりに、ルーティング構成がディスク上のファイルよりも優先されるようにする場合、RouteCollectionのRouteeExistingFilesプロパティをTrueに設定できます。 (デフォルトでは虚偽です。)

他のヒント

デフォルトでは、ルーティングエンジンは、サーバーに物理的に存在するすべてのファイルのルートマップを無視します。要するに、MVCアプリが静的ファイルにリンクするために何もする必要はありません。

IISで少しトリックを行うこともできます。 Virtual Directoryの下にあるコンテンツフォルダーにJS、画像、CSSなどを保存します。

コンテンツフォルダーのプロパティ(IISマネージャー)を表示する場合は、仮想ディレクトリとして作成してから、WildCardマッピングを削除します。次に、コンテンツフォルダーを通常のディレクトリに戻します。これにより、ASPNET_ISAPIハンドラーによって処理されるこれらのファイルのリクエストを停止するはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top