使用ASP.NET MVC的HttpHandlers

mar*_*are 3 asp.net-mvc

如果我有一个标准的AXD HttpHandler和*.axd的默认忽略路由,那么为什么ASP.NET MVC仍在处理子目录中的请求,例如,如果有针对**/Content/Css/**css的请求. axd?d ....如果请求是在root /css.axd?d进行的....一切正常.

Lon*_*eer 6

我想这条路线是故意按照设计制作的,也许是因为字符串开头的通配符不是那么高效.

不幸的是,这不起作用:

routes.IgnoreRoute("{*pathAndResource} .axd/{*pathInfo}")

解决方案是使用约束 - 请参阅Phil Haack的博客文章

Phil的博客使用正则表达式约束,但您可以创建自己的自定义约束,以使事物更具可读性:

routes.IgnoreRoute("match axds"
 "{*url}", new { controller = "MyController", action = "MyAction" }, new
              {
                  myCustomConstraint = new FileExtensionConstraint(".axd")
              }
Run Code Online (Sandbox Code Playgroud)