ASP.NET MVCは、IIS7での明示的なファイルのルートのためのコントローラを使用していません
-
23-09-2019 - |
質問
を見つけてファイルを提供することをStaticResourceControllerを考えてみます。
私はStaticResourceControllerを使用して、このファイルに対する要求を処理する「favicon.icoを」の明示的なルートを設定しました。
routes.MapRoute(
"favicon",
"favicon.ico",
new { controller = "StaticResource", action = "Get", file = "favicon.ico", area="root"},
new[] { "Dimebrain.Mvc.Controllers" }
);
HTTPのリクエストを行うときに、でIIS6が期待される結果が発生します:// localhostを:8080 / favicon.icoを
。 私はIIS7 HTTPに展開するときに、残念ながら://localhost/favicon.ico
のIISで生成された404を返します。 、おそらくそれは実際には存在しないWebルートフォルダにfavicon.icoを探しています。私は、これは、それがマルチテナントとのfavicon.icoファイルを変更することができている、特に以来、私のアプリケーションのために良いことではないことをStaticResourceControllerに十分な出来事を持っています。私はすべての要求を処理し、RouteExistingFilesで無視ファイルのチェックにRouteCollectionをオーバーライドするために自分のWebサーバーモジュールを設定しています。
なぜUrlRoutingModuleはIIS7に私の方法で取得し、ディスクからの静的ファイルを提供迫られて(404)?
解決
は、この問題へのケース誰の実行では、溶液は、あなたがあなたの実際の静的なファイルがどこに住んでMVCは、フォルダ内のプロセス要求にない知っているようにする必要があります:
// Make sure MVC is handling every request for static files
routes.RouteExistingFiles = true;
// Don't process routes where actual static resources live
routes.IgnoreRoute("content/{*pathInfo}");
routes.IgnoreRoute("scripts/{*pathInfo}");
routes.IgnoreRoute("areas/admin/content/{*pathInfo}");
routes.IgnoreRoute("areas/admin/scripts/{*pathInfo}");
他のヒント
ダニエル・クレンナの答えにadiitionでは、system.webServerセクションでweb.confugファイルに追加する必要があります:
<modules runAllManagedModulesForAllRequests="true"/>
所属していません StackOverflow