我正在尝试为我的Web API服务配置OData端点,但我无法解析MapODataRoute
方法。根据这个tutorial,以下是关于要求的说明:
ASP.NET和Web Tools 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'并且没有扩展方法'MapODataRoute'接受 “System.Web.Http.HttpRouteCollection”类型的第一个参数可以 找到(你错过了使用指令或汇编引用吗?)
我相信如果我安装NuGet包,这条消息就会解决(而且安装它没什么大不了的),但是我认为所有OData支持都卷入了'ASP.NET和Web Tools 2012.2更新'因此不需要NuGet包裹?有谁知道为什么MapODataRoute
没有解决或我需要哪个参考?
答案 0 :(得分:2)
来自同一个教程:
如果您安装了ASP.NET和Web Tools 2012.2 Update,那么Web API 项目模板自动包含OData包。
因此,检查项目的nuget包,是否存在odata包。
可能是,您安装了新版本的ASP.NET和Web Tools,然后打开旧项目。 我怀疑只有在安装ASP.NET和Web Tools 2012.2更新后创建项目时才需要手动添加odata软件包。
答案 1 :(得分:2)
我必须添加以从nuget安装Microsoft ASP.NET Web API OData。然后确保包含using语句System.Web.Http以使路由正常工作。还要确保将路由添加到WebApiConfig.cs而不是RouteConfig.cs
答案 2 :(得分: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
方法。
我希望这会有所帮助。