Я просмотрел тысячи вопросов и блогов, но до сих пор не до конца понимаю прокладку плотин!
Как и в блог Скотта Хансельмана, я пытаюсь направить определенный вызов в .GIF в пользовательский HttpHandler, в то время как остальная часть сайта MVC4 ведет себя нормально. Я прошёл 90% пути.
Итак, в моем RouteConfig у меня есть
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add("AnalyticsRoute", new Route("analytics/a.gif", new AnalyticsRouteHandler()));
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.RouteExistingFiles = true;
}
и в моем web.config у меня есть
<handlers>
...
<add name="analytics" verb="*" path="analytics/a.gif" type="Lms.Analytics.AnalyticsHandler, Lms.Analytics" preCondition="managedHandler" />
</handlers>
Таким образом, http://mysite.com/analytics/a.gif маршрутизируется правильно и все доволен, однако все мои ActionLinks разрешаются как http://mysite.com/analytics/a.gif?action=Index&controller=Category
Если я изменю порядок в RouteConfig, т.е.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
routes.Add("AnalyticsRoute", new Route("analytics/a.gif", new AnalyticsRouteHandler()));
routes.RouteExistingFiles = true;
}
Все ссылки прекрасно разрешаются, но вызов http://mysite.com/analytics/a.gif приводит к ошибке 404?
Должно быть, я делаю что-то глупое и просто не вижу этого?!
заранее спасибо