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