config.MapODataServiceRoute错误

Rob*_*bin 15 c# asp.net odata asp.net-web-api

我目前正在关注本指南 - > 链接到asp.net网站

正如指南所说,我通过nuget控制台添加了所有必需的软件包,并将必要的使用添加到WebApIConfig文件中..但是当我添加端点寄存器方法VS给了我一个错误.

我添加的方法:

public static void Register(HttpConfiguration config)
    {
        // New code:
        ODataModelBuilder builder = new ODataConventionModelBuilder();
        builder.EntitySet<Product>("Products");
        config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: null,
            model: builder.GetEdmModel());
    }
Run Code Online (Sandbox Code Playgroud)

错误VS给了我:

Error   1   'System.Web.Http.HttpConfiguration' does not contain a definition for 'MapODataServiceRoute' and no extension method 'MapODataServiceRoute' accepting a first argument of type 'System.Web.Http.HttpConfiguration' could be found (are you missing a using directive or an assembly reference?) C:\Users\rvcamp\Desktop\odataTest\odataTest\App_Start\WebApiConfig.cs   29  20  odataTest
Run Code Online (Sandbox Code Playgroud)

我检查了指南的注释,但没有提到此错误,我也无法解决错误.我究竟做错了什么?

Wat*_*son 19

我刚遇到这个问题.很沮丧.

我通过在代码页顶部的引用中添加它来解决它

using System.Web.OData.Extensions;
Run Code Online (Sandbox Code Playgroud)

右键单击该方法也没有显示解析菜单项.

重新安装一切都没有为我解决任何问题.

  • OData v4 的正确命名空间是`using System.Web.Http.OData.Extensions;` (2认同)
  • 对于`Microsoft.AspNet.OData 7.0.0',请参见下面的@Amir答案。目前非常有帮助。 (2认同)

小智 11

MapODataServiceRoute在Routes Collection中可用,因此下面的代码可以

config.Routes.MapODataServiceRoute(
"odata",
 null, 
GetEdmModel(), 
new DefaultODataBatchHandler(GlobalConfiguration.DefaultServer));
Run Code Online (Sandbox Code Playgroud)

  • 这取决于:对于OData3,您调用`config.Routes.MapODataServiceRoute`,对于OData4,您使用`config.MapODataServiceRoute`(对于OData1-2,您使用`config.Routes.MapODataRoute`). (6认同)

str*_*ius 8

对于OData V3

  1. 安装Microsoft.AspNet.WebApi .OData
  2. 添加using System.Web.Http.OData.Builder;using System.Web.Http.OData.Extensions;
  3. 用得像 config.Routes.MapODataServiceRoute(...)

对于OData V4

  1. 安装Microsoft.AspNet.OData
  2. 添加using System.Web.OData.Builder;using System.Web.OData.Extensions;
  3. 用得像 config.MapODataServiceRoute(...)

不要卡在WebApi上,它们都是用于web api.


Ami*_*ich 5

如果已升级到,Microsoft.AspNet.OData 7.0.0那么您要查找的名称空间是:

using Microsoft.AspNet.OData.Extensions;
Run Code Online (Sandbox Code Playgroud)