Asp.net web api 未找到方法:';Int32 Microsoft.Data.OData.Query.SemanticAst.QueryNode.get#u Kind()';

Asp.net web api 未找到方法:';Int32 Microsoft.Data.OData.Query.SemanticAst.QueryNode.get#u Kind()';,asp.net-web-api,odata,Asp.net Web Api,Odata,我正在使用MVC4创建一个WebApi应用程序,它需要支持oData 我按照建议安装了软件包Microsoft.AspNet.WebApi.OData(安装软件包Microsoft.AspNet.WebApi.OData-Pre),但在筛选[例如:/api/cars?$filter=startswith(Name,'F')]时,我遇到了异常: {"Message":"An error has occurred.","ExceptionMessage":"Method not found: 'In

我正在使用MVC4创建一个WebApi应用程序,它需要支持oData

我按照建议安装了软件包Microsoft.AspNet.WebApi.OData(安装软件包Microsoft.AspNet.WebApi.OData-Pre),但在筛选[例如:/api/cars?$filter=startswith(Name,'F')]时,我遇到了异常:

{"Message":"An error has occurred.","ExceptionMessage":"Method not found: 'Int32 Microsoft.Data.OData.Query.SemanticAst.QueryNode.get_Kind()'.","ExceptionType":"System.MissingMethodException","StackTrace":"   at System.Web.Http.OData.Query.Validators.FilterQueryValidator.ValidateSingleValueNode(SingleValueNode node, ODataValidationSettings settings)\r\n   at System.Web.Http.OData.Query.Validators.FilterQueryValidator.ValidateQueryNode(QueryNode node, ODataValidationSettings settings)\r\n   at System.Web.Http.OData.Query.Validators.FilterQueryValidator.Validate(FilterQueryOption filterQueryOption, ODataValidationSettings settings)\r\n   at System.Web.Http.OData.Query.FilterQueryOption.Validate(ODataValidationSettings validationSettings)\r\n   at System.Web.Http.OData.Query.Validators.ODataQueryValidator.Validate(ODataQueryOptions options, ODataValidationSettings validationSettings)\r\n   at System.Web.Http.OData.Query.ODataQueryOptions.Validate(ODataValidationSettings validationSettings)\r\n   at System.Web.Http.QueryableAttribute.ValidateQuery(HttpRequestMessage request, ODataQueryOptions queryOptions)\r\n   at System.Web.Http.QueryableAttribute.ExecuteQuery(IEnumerable query, HttpRequestMessage request, HttpConfiguration configuration, HttpActionDescriptor actionDescriptor)\r\n   at System.Web.Http.QueryableAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.CallOnActionExecuted(HttpActionContext actionContext, HttpResponseMessage response, Exception exception)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<>c__DisplayClass2.<System.Web.Http.Filters.IActionFilter.ExecuteActionFilterAsync>b__0(HttpResponseMessage response)\r\n   at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass41`2.<Then>b__40(Task`1 t)\r\n   at System.Threading.Tasks.TaskHelpersExtensions.ThenImpl[TTask,TOuterResult](TTask task, Func`2 continuation, CancellationToken cancellationToken, Boolean runSynchronously)"}
{“消息”:“出现错误”,“异常消息”:“未找到方法:'Int32 Microsoft.Data.OData.Query.SemanticAst.QueryNode.get_Kind()”,“异常类型”:“System.MissingMethodException”,“StackTrace”:“位于System.Web.Http.OData.Query.Validators.FilterQueryValidator.ValidateSingleValueNode”(SingleValueNode节点,ODataValidationSettings设置)\r\n位于System.Web.Http.OData.Query.Validators.FilterQueryValidator.ValidateryNode(QueryNode节点,ODataValidationSettings设置)\r\n位于System.Web.Http.OData.Query.Validators.FilterQueryValidator.Validators(FilterQueryOption FilterQueryOption FilterQueryOption,ODataValidationSettings设置)\r\n位于System.Web.Http.OData.Query.FilterQueryOption.Validate(ODataValidationSettings validationSettings)\r\n位于System.Web.Http.OData.Query.Validators.ODataQueryValidator.Validate(ODataQueryOptions,ODataValidationSettings validationSettings)\r\n位于System.Web.Http.OData.Query.ODataQueryOptions.Validate(ODataValidationSettings validationSettings)\r\n位于System.Web.Http.QueryableAttribute.ValidateQuery(HttpRequestMessage请求,ODataQueryOptions查询选项)\r\n位于System.Web.Http.QueryableAttribute.ExecuteQuery(IEnumerable查询,HttpRequestMessage请求,HttpConfiguration配置,HttpActionDescriptor actionDescriptor)\r\n在System.Web.Http.QueryableAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext)\r\n在System.Web.Http.Filters.ActionFilterAttribute.CallOnActionExecuted(HttpActionContext actionContext,HttpResponseMessage response,Exception Exception)处(HttpResponseMessage response)\r\n在System.Threading.Tasks.TaskHelperExtensions.c__在System.Threading.Tasks.TaskHelperExtensions.c_uu显示Class41`2.b_u 40(Task`1 t)\r\n在System.Threading.Tasks.Tasks.TaskHelperExtensions.ThenImpl[TTask,TOuterResult](TTask任务,函数`2 continuation,CancellationToken,Boolean runSynchronously)}

我缺少什么?

导致此问题的原因是与基础OData库版本的二进制不兼容。我强烈建议使用我们的夜间版本。只需在package manager控制台中使用此命令即可:

Install-Package Microsoft.AspNet.WebApi.OData -Source http://www.myget.org/F/aspnetwebstacknightly/ -Pre
这还将为您提供一个更接近最终版本的WebAPI OData支持版本