如果我有一个标准的AXD HttpHandler和* .axd的默认忽略路由,那么为什么ASP.NET MVC仍在处理子目录中的请求,例如,如果有针对** / Content / Css / *的请求* css.axd?d .... 如果请求是在root /css.axd?d ....请一切正常。
答案 0 :(得分:6)
我猜这条路线是故意按照设计制作的,可能是因为字符串开头的通配符不是那么高。
不幸的是,这不起作用:
routes.IgnoreRoute(“{* pathAndResource} .axd / {* pathInfo}”)
解决方案是使用约束 - 请参阅Phil Haack's blog post
Phil的博客使用正则表达式约束,但您可以创建自己的自定义约束,以使事物更具可读性:
routes.IgnoreRoute("match axds"
"{*url}", new { controller = "MyController", action = "MyAction" }, new
{
myCustomConstraint = new FileExtensionConstraint(".axd")
}