これが私が見つけた解決策ですが、もっと簡単な方法を見つけたかったのです。
このソリューションでは、ファイルをの物理パスに配置することは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();
)