我需要设置一个文件处理程序来路由多个子目录,如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'),它会很有用,但是当您有多个目录时会失败。< / p>
我尝试设置一个通配符并且没有用(即'新路由(“覆盖/ {filepath} / * / {filename}”')
这是来自大型NAS的图像(想想像300万张图像)所以它不像我只能移动文件。
谢谢!
答案 0 :(得分:3)
好好玩了很多玩游戏后我发现了如何让它发挥作用。
像这样改变路线定义;
routes.Add(
"ImageRoute",
new Route("images/{*filepath}",
new ImageRouteHandler()));
然后把它放在默认的MapRoute之后。重要的部分是文件路径之前的“*”,告诉MVC在此之后发送任何内容作为文件路径RouteData的一部分。所以在GetHttpHandler()方法中,我可以使用它来获取完整路径;
string fp = requestContext.RouteData.Values["filepath"] as string;
活泉!
答案 1 :(得分:0)
您不能将整个路径视为一个路径参数吗?像这样:
routes.Add(
"ImageRoute",
"/images/{path}",
new { controller = "Image", action = "Image" }
);
然后访问ActionResult Image(string path) { }
操作方法中的整个路径?