C# 如何在web api项目中执行Routes.IgnoreRoute?
在我的web api项目应用程序_Start()方法中,我将执行以下操作以支持elmah.axdC# 如何在web api项目中执行Routes.IgnoreRoute?,c#,asp.net-mvc-4,asp.net-web-api,C#,Asp.net Mvc 4,Asp.net Web Api,在我的web api项目应用程序_Start()方法中,我将执行以下操作以支持elmah.axd RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}") 但这需要依赖于System.Web.Mvc和相关的dll,比如System.Web.WebPages,这在我的Web api项目中并不是我真正想要的。有没有办法在不引入所有dll的情况下获得IgnoreRoutes功能?不幸的是,ASP.NET Web API的路由系统不支持Ig
RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
但这需要依赖于System.Web.Mvc和相关的dll,比如System.Web.WebPages,这在我的Web api项目中并不是我真正想要的。有没有办法在不引入所有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()
);
你能解释一下你想做什么吗?如果您使用web主机(意味着您处于ASP.NET运行时)web API,则引用System.web(路由不是MVC的一部分,它是核心ASP.NET的一部分)是没有问题的,并且如果您使用自主机,那么它无论如何也不能为静态文件提供服务,除非您将它们作为来自控制器的流提供。。