2013-02-26 48 views
2

在我的Web API項目的Application_Start()方法,我做以下,以允許elmah.axd如何在web api項目中做Routes.IgnoreRoute?

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

但是,這需要在System.Web.Mvc的依賴和相關的DLL的喜歡System.Web.WebPages我真的不想在我的web api項目中。有沒有辦法在不引入所有這些DLL的情況下獲得IgnoreRoutes功能?

+0

你能解釋一下你正在嘗試做什麼?如果您是Web主機(意思是您在ASP.NET運行時)Web API,則在引用System.Web時不存在任何問題(路由不是* MVC的一部分,它是核心ASP.NET的一部分),並且如果使用自主主機,好吧,無論如何都不能提供靜態文件,除非您將它們作爲來自控制器的流提供。 – 2013-02-27 00:54:50

回答

0

不幸的是,ASP.NET Web API的路由系統中不支持IgnoreRoutes。但是,如果應用程序在ASP.NET中託管(而不是託管爲SelfHost應用程序),則仍然可以將IgnoreRoute添加到RouteTable(就像在MVC中一樣)。

0

的WebAPI 2.1現在實現一個版本的IgnoreRoute擴展方法

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

的引擎蓋下這創造了一個System.Web.Http.Routing.StopRoutingHandler其然後remapped到System.Web.Routing.StopRoutingHandler無論如何。

但是下MVC4 WebApi1(由單聲道支持)我不解決這個問題,但其他人應該逃脫:

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