何千もの質問やブログを調べましたが、まだダムのルーティングを完全には理解していません!
Scott Hanselman のブログに沿って、.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 エラーが発生しますか?
私は何かばかげたことをしているに違いないのに、それが見えないだけですか?!
前もって感謝します