4

我正在尝试为我的 Web API 服务配置 OData 端点,但我无法解析该MapODataRoute方法。根据本教程,以下是有关要求的说明:

ASP.NET 和 Web 工具 2012.2 更新Microsoft ASP.NET Web API OData NuGet 包。

我安装了当前的 ASP.NET 和 Web Tools 2012.2 更新(已卸载 RC 版本并安装了最新版本),所以我的项目应该足够了。

但是我无法通过以下代码行:

config.Routes.MapODataRoute("ODataRoute", "odata", model);

...由于以下异常:

“System.Web.Http.HttpRouteCollection”不包含“MapODataRoute”的定义,并且找不到接受“System.Web.Http.HttpRouteCollection”类型的第一个参数的扩展方法“MapODataRoute”(您是否缺少 using 指令还是汇编参考?)

我相信如果我安装 NuGet 包,此消息将解决(安装它没什么大不了的),但我认为所有 OData 支持都汇总到“ASP.NET 和 Web 工具 2012.2 更新”中,因此不需要 NuGet包裹?有谁知道为什么MapODataRoute不解决或我需要哪个参考?

4

3 回答 3

2

从同一个教程:

如果您安装了 ASP.NET 和 Web Tools 2012.2 Update,则 Web API 项目模板会自动包含 OData 包。

因此,请检查项目的 nuget 包,是否存在 odata 包。

可能是,您安装了新版本的 ASP.NET 和 Web 工具,然后打开了旧项目。我怀疑只有在安装 ASP.NET 和 Web Tools 2012.2 Update 后创建项目时才需要手动添加 odata 包。

于 2013-04-26T16:14:00.890 回答
2

我必须添加从 nuget安装Microsoft ASP.NET Web API OData 。然后确保包含 using 语句 System.Web.Http 以使路由正常工作。还要确保将路由添加到 WebApiConfig.cs 而不是 RouteConfig.cs

于 2013-08-14T01:29:20.163 回答
2

对我来说,上述解决方案都没有奏效。

MapODataRoute方法现已弃用。对我来说完美的方法是执行以下操作:

var builder = new ODataConventionModelBuilder();
        builder.EntitySet<Supplier>("Suppliers");
        builder.EntitySet<Category>("Categories");
        builder.EntitySet<Product>("Products");            
        config.MapODataServiceRoute(routeName: "odata", routePrefix: "odata", model: builder.GetEdmModel());

注意不同的MapODataServiceRoute方法。我希望这有帮助。

于 2017-03-16T15:08:18.137 回答