MVC使用文件名捕获所有文件

时间:2015-01-13 18:39:37

标签: c# asp.net-mvc routing

我有一个控制器操作,其功能类似于我用来显示物理文件夹内容的虚拟目录。

因此,当您转到/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}");

0 个答案:

没有答案