在我的 web api 项目 Application_Start() 方法中,我正在执行以下操作以允许 elmah.axd
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
但这需要对 System.Web.Mvc 和相关 dll 的依赖,比如我的 web api 项目中我并不真正想要的 System.Web.WebPages。有没有办法在不引入所有这些 dll 的情况下获得 IgnoreRoutes 功能?
在我的 web api 项目 Application_Start() 方法中,我正在执行以下操作以允许 elmah.axd
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
但这需要对 System.Web.Mvc 和相关 dll 的依赖,比如我的 web api 项目中我并不真正想要的 System.Web.WebPages。有没有办法在不引入所有这些 dll 的情况下获得 IgnoreRoutes 功能?
遗憾的是,ASP.NET Web API 的路由系统中不支持 IgnoreRoutes。但是,如果应用程序在 ASP.NET 中托管(而不是作为 SelfHost 应用程序托管),您仍然可以将 IgnoreRoute 添加到 RouteTable(就像在 MVC 中一样)。
WebApi 2.1 现在实现了 IgnoreRoute 扩展方法的一个版本
config.Routes.IgnoreRoute("elmah", "{resource}.axd/{*pathInfo}");
在后台,这会创建一个 System.Web.Http.Routing.StopRoutingHandler ,然后无论如何都会重新映射到 System.Web.Routing.StopRoutingHandler 。
但是在 MVC4 WebApi1(由单声道支持)下我无法解决这个问题,但其他人应该逃脱:
config.Routes.MapHttpRoute(
name: "ignore",
routeTemplate: "{resource}.asp/{*pathInfo}",
handler: new System.Web.Http.Routing.StopRoutingHandler()
);