【问题标题】:Cannot Resolve MapODataRoute for a Web API OData Endpoint无法为 Web API OData 端点解析 MapODataRoute
【发布时间】:2013-04-20 20:31:37
【问题描述】:

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

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' 并且没有扩展方法 'MapODataRoute' 接受 'System.Web.Http.HttpRouteCollection' 类型的第一个参数可以 被发现(您是否缺少 using 指令或程序集引用?)

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

【问题讨论】:

    标签: asp.net-web-api odata


    【解决方案1】:

    来自同一个教程:

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

    所以,请检查项目的 nuget 包,是否存在 odata 包。

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

    【讨论】:

    • 这一定是问题所在。添加 NuGet 包确实 解决了这个问题。由于此解决方案是在工具更新之前创建的,因此我确信它没有改造新软件包。完全有道理。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      对我来说,上述解决方案均无效。

      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 方法。 我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-29
        • 1970-01-01
        • 1970-01-01
        • 2018-02-06
        • 1970-01-01
        • 2020-05-28
        • 2018-07-11
        • 1970-01-01
        相关资源
        最近更新 更多