2013-08-26 15 views
3

我剛從我的WebAPI項目更新(從v3.x)到最新版本的AttributeRouting,它剛剛開始產生我從未見過的錯誤。屬性路由WebAPI現在生成錯誤

現在只要一個電話是給API我得到一個錯誤,這樣做:

System.InvalidOperationException: The constraint entry 'inboundHttpMethod' on the route with route template 'my/path' must have a string value or be of a type which implements 'IHttpRouteConstraint'. 
    at System.Web.Http.Routing.HttpRoute.ProcessConstraint(HttpRequestMessage request, Object constraint, String parameterName, HttpRouteValueDictionary values, HttpRouteDirection routeDirection) 
    at System.Web.Http.Routing.HttpRoute.ProcessConstraints(HttpRequestMessage request, HttpRouteValueDictionary values, HttpRouteDirection routeDirection) 
    at System.Web.Http.Routing.HttpRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) 
    at AttributeRouting.Web.Http.Framework.HttpAttributeRoute.GetRouteData(String virtualPathRoot, HttpRequestMessage request) 
    at System.Web.Http.WebHost.Routing.HttpWebRoute.GetRouteData(HttpContextBase httpContext) 
    at System.Web.Routing.RouteCollection.GetRouteData(HttpContextBase httpContext) 
    at System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) 
    at System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) 
    at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

它已經沒有問題的工作了幾個月。

非文檔詳細信息有任何使用更改。我的配置文件看起來正確。

出了什麼問題?我無法找到其他人報告這一點。

回答

4

絕對在內存託管類型問題。 最近,我更新到MVC 5後遇到同樣的問題。我看了各種帖子,實際上找到一個最終幫助我。這是我如何解決這個問題。

在爲屬性路由安裝庫之後,必須在global.ascx文件中具有以下內容。

AttributeRoutingHttpConfig.RegisterRoutes(GlobalConfiguration.Configuration.Routes); 

在AttributeRoutingHttpConfig類,將以下代碼:與

routes.MapHttpAttributeRoutes(cfg => 
{ 
      cfg.InMemory = true; 
      cfg.AutoGenerateRouteNames = true; 
      cfg.AddRoutesFromAssemblyOf<ANY_API_Controller>(); 
     }); 

這裏

routes.MapHttpAttributeRoutes(); 

,ANY_API_Controller是指從項目中的任何您apicontroller類。

+0

啊,很有意思。謝謝(你的)信息! – Jammer