具有多个子目录的文件的 ASP.NET MVC 路由

标签 asp.net asp.net-mvc-2 routing

我需要设置一个文件处理程序来路由多个子目录,比如 tihs;

http://localhost/images/7/99/786936215595.jpg

我试着把它放在 global.asax 文件中;
 routes.Add(
   "ImageRoute",
   new Route("covers/{filepath}/{filename}",
   new ImageRouteHandler()));

我正在使用在此 Question 中找到的 ImageHandler ,如果您只有一个子目录(即“/images/15/786936215595.jpg”),则效果很好,但当您有多个目录时会失败。

我尝试设置一个通配符,但没有奏效(即 'new Route("covers/{filepath}/*/{filename}"')

这是从大型 NAS 提供图像(想想大约 300 万张图像),所以我不能只是移动文件。

谢谢!

最佳答案

好吧,经过大量的玩耍和 google fu,我找到了如何使它工作。

像这样更改路由定义;

 routes.Add(
     "ImageRoute",
     new Route("images/{*filepath}",
     new ImageRouteHandler()));

然后把它放在默认的 MapRoute 之后。重要的部分是文件路径前的“*”,它告诉 MVC 将其后的任何内容作为文件路径 RouteData 的一部分发送。因此,在 GetHttpHandler() 方法中,我可以使用它获取完整路径;
string fp = requestContext.RouteData.Values["filepath"] as string;

哇!

关于具有多个子目录的文件的 ASP.NET MVC 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513754/

相关文章:

c# - MVC 2 与 VS 2010 View 构建错误 : Feature 'anonymous types' cannot be used because it is not part of the ISO-2 C# language specification

c# - 如何检查 lambda 表达式中的日期是否为空,并仅在为空时才使用今天的日期

c# - StackOverflow 异常

asp.net-mvc - url 中的 ASP.NET MVC2 垃圾

asp.net-mvc-2 - ASP.NET MVC 2 关于异步 Controller 的问题

ruby-on-rails - Rails 3 重写命名路由

asp.net - 使用 edmx 文件时如何在连接字符串中指定元数据位置

asp.net - 在 ASP.NET 中使用资源文件作为 HTML 控件

zend-framework - Zend 框架 : How to disable default routing?

ruby-on-rails - Devise and I18n - 重置密码路由问题