我有一个控制器操作,其功能类似于我用来显示物理文件夹内容的虚拟目录。
因此,当您转到/Document/Folder/anyFolder/name/here
时,它会显示来自C:\BaseFolder\anyFolder\name\here
的数据。
但是,当尝试路由到带扩展名的文件时,ASP.NET将尝试在C:\MySiteFolder\anyFolder\name\here\filename.txt
中找到一个文件,该文件将失败,因为该文件夹不存在,它存在于{{1}中相反,所以我得到一个404而不是控制器捕获请求。
以下是C:\BaseFolder
的当前路线:
Document/Folder
我的默认控制器路由:
routes.MapRoute("Document Folder", "Document/Folder/{*folderPath}", new { controller = "Document", action = "Folder" });
我认为routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
参数会捕获所有内容,但它不会捕获文件名(即带扩展名的内容)。如何让catch-all参数{*folderPath}
也捕获文件名?或者我应该尝试为其中包含{*folderPath}
s的路径添加IgnoreRoute
吗?
我尝试了这个,但是失败了:
.
错误
routes.IgnoreRoute("Document/Folder/{*path}.{extension}");