Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HttpHandlers with ASP.NET MVC

Tags:

asp.net-mvc

If I have a standard AXD HttpHandler and the default ignore route for *.axd, then why is ASP.NET MVC still handling requests in subdirs, for instance if there is a request made for **/Content/Css/**css.axd?d.... If the request is made at root /css.axd?d.... everything works fine.

like image 482
mare Avatar asked Nov 25 '25 00:11

mare


1 Answers

I guess the route was deliberately made like that by design, maybe because the wildcard at a start of string isn't as performant.

Unfortunately this won't work:

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

The solution is to use constraints - see Phil Haack's blog post

Phil's blogs uses a regular expression constraint, but you could create you own custom contraint alternatively to make things more readable:

routes.IgnoreRoute("match axds"
 "{*url}", new { controller = "MyController", action = "MyAction" }, new
              {
                  myCustomConstraint = new FileExtensionConstraint(".axd")
              }
like image 93
LondonBasedEngineer Avatar answered Nov 28 '25 01:11

LondonBasedEngineer



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!