localhost/foo/bar
このような拡張子のない URLが要求されたときに実行されるはずの HttpHandler を持つプロジェクトがあります。これをローカルの Visual Studio 開発サーバーで (の代わりに<httpHandlers>
inを使用して) 適切に動作させましたが、この機能は IIS 7.5 に展開すると動作しません (標準 404 エラー: http://i.imgur.com/YuNjT.jpg ) 。 . この問題は拡張子のない URL に限定されるものではありません (最後に拡張子を追加しても問題は残ります) が、このシナリオでは拡張子のない URL を使用することを希望する機能です。拡張子のない URL がいくつかの問題を引き起こす可能性があるという情報を Google で検索したので、ここで言及します。AppPool は Integrated に設定されています。aspnet_regiis.exe -i を実行しました。IIS サーバーに HTTP リダイレクト機能がインストールされています。ここに私のハンドラの設定があります:<system.web>
<system.webServer><handlers>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<add name="FileDownloadHandler" path="/Home/Files/*" verb="*" type="MvcApplication1.FileDownloadHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
</handlers>
<directoryBrowse enabled="true" />
</system.webServer>
そして、これが私のルーティング設定です:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("home/files/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
コードは問題ないと思いますが、IIS の構成に問題があります。誰かが私を正しい方向に導くことができますか? 私は何日もグーグルで検索しましたが、私を助ける解決策を見つけることができませんでした. サンプル プロジェクトは次のとおりです (ローカル VS 開発サーバーでは動作しますが、IIS では動作しません): http://mapman.pl/MvcApplication1.zip
上記のソリューションをビルド (およびローカル IIS にデプロイ) するときは、次のような URL をリクエストしてみてください。http://localhost/MvcApplication1/Home/Files/foobar
前もってありがとう、バーテック