これが私が見つけた解決策ですが、もっと簡単な方法を見つけたかったのです。
このソリューションでは、ファイルをの物理パスに配置することはhttp://mydomain/SomeFolder/できません。このフォルダーは物理的に存在できません。そうしないと、コントローラー/ビューが機能しません。しかし、それが達成することは、私の主な目標であっhttp://mydomain/SomeFolder/SomeFile.zipた と同じファイルを返すことです。http://mydomain/**Content**/SomeFolder/SomeFile.zip
http://mydomain/SomeFolder/との 2 つの異なるルートが必要です。http://mydomain/SomeFolder/anything/file/etc
routes.MapRoute(
"SomeFolder",
"SomeFolder",
new { controller = "SomeFolder", action = "Index" }
);
routes.MapRoute(
"SomeFolderSub",
"SomeFolder/{*any}",
new { controller = "TryDownloadFile", action = "Index" }
);
routes.RouteExistingFiles残っていfalseます。
次にSomeFolderController、SomeFolder のビューを返します。そして、代わりにTryDownloadFileControllerファイルが存在するかどうかを確認し、 それを返します。http://mydomain/Content/SomeFolder/http://mydomain/SomeFolder/
(ファイルが存在しない場合は、404 応答が返されるはずです。これは次のようになりますreturn this.HttpNotFound();)