如何在web api项目中做Routes.IgnoreRoute?

时间:2013-02-26 22:51:27

标签: c# asp.net-mvc-4 asp.net-web-api

在我的web api项目Application_Start()方法中,我正在执行以下操作以允许elmah.axd

RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

但这需要依赖System.Web.Mvc和相关的dll,比如System.Web.WebPages,我不想在我的web api项目中使用它。有没有办法在不引入所有dll的情况下获得IgnoreRoutes功能?

2 个答案:

答案 0 :(得分:0)

遗憾的是,ASP.NET Web API的路由系统中不支持IgnoreRoutes。但是,如果应用程序在ASP.NET中托管(而不是作为SelfHost应用程序托管),您仍然可以向RouteTable添加IgnoreRoute(就像在MVC中一样)。

答案 1 :(得分:0)

WebApi 2.1现在实现了IgnoreRoute扩展方法的一个版本

config.Routes.IgnoreRoute("elmah", "{resource}.axd/{*pathInfo}");

在幕后创建了一个System.Web.Http.Routing.StopRoutingHandler,无论如何都是remapped到System.Web.Routing.StopRoutingHandler。

然而,根据MVC4 WebApi1(由mono提供支持),我无法解决这个问题,但是其他人应该逃脱:

config.Routes.MapHttpRoute(
            name: "ignore",
            routeTemplate: "{resource}.asp/{*pathInfo}",
            handler: new System.Web.Http.Routing.StopRoutingHandler()
);