Я травляю тысячи вопросов и блогов и до сих пор не полностью понимаю маршрутизацию плотин!Маршрутизация .GIF в одну сторону, остальная часть сайта MVC 4 еще
По строкам Scott Hanselman's blog Я пытаюсь направить определенный вызов в .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?
Должно быть, я делаю что-то глупое и просто не вижу его ?!
Заранее спасибо
Хм, возможно, это тоже сработало, но это был не путь, который я хотел преследовать. Я был уверен, что это может быть обработано в HttpHandlers. Извините, я не пробовал и решил это по-другому. – Martyn
как вы его решили? Вы должны поделиться своим решением, чтобы мы все это видели, и отмечаем его как правильное (что вы можете сделать через 2 дня, я думаю). – JotaBe
У меня есть :) см. Ниже – Martyn