我刚刚在我的AttributeRouting项目上更新(从V3.x版本)到最新版本的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)几个月来一直没有问题。
没有文档的细节有任何使用上的变化。我的配置文件看起来是正确的。
哪里出问题了?我找不到其他人报告这件事。
发布于 2013-11-13 17:08:31
肯定在内存托管类型问题上。最近,在更新到MVC 5之后,我遇到了同样的问题。我查看了不同的帖子,实际上找到了一个最终帮助我解决的问题。我就是这样解决这个问题的。
安装属性路由库后,必须在global.ascx文件中包含以下内容。
AttributeRoutingHttpConfig.RegisterRoutes(GlobalConfiguration.Configuration.Routes);在AttributeRoutingHttpConfig类中,替换以下代码:
routes.MapHttpAttributeRoutes();使用
routes.MapHttpAttributeRoutes(cfg =>
{
cfg.InMemory = true;
cfg.AutoGenerateRouteNames = true;
cfg.AddRoutesFromAssemblyOf<ANY_API_Controller>();
});在这里,ANY_API_Controller引用了项目中的任何一个apicontroller类。
https://stackoverflow.com/questions/18446316
复制相似问题