我需要设置一个文件处理程序来路由多个子目录,比如 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/