4

我想在 Web Api 中将 OData 用于 Controller 中的几个 Action 方法。发生的事情是,一旦我在 Web Api 中启用 OData,错误消息格式就会更改所有错误。有没有办法只为特定的控制器/动作路由配置 Odata。

启用 OData 之前的错误消息如下所示:

{"Message":"User Name/Password are invalid ."}

启用 OData 后的错误消息如下所示:

{
  "odata.error":{
    "message":{
      "lang":"en-US","value":"User Name/Password are invalid ."
    }
  }
}

我想将 OData 配置为仅处理特定的控制器,以便其余 API 不受 OData 设置的影响。感谢您的帮助。

4

1 回答 1

3

我们在 RC 和 RTM 之间所做的重大更改之一是我们完全删除了 EnableOData 扩展方法。我们意识到在全球范围内注册 OData 格式化程序是一个坏主意,因为它会影响控制器,无论它们是否应该成为 OData 控制器。

因此,在我们的 OData v1 版本和我们当前的夜间构建中,我们添加了一个名为 ODataController 的新基类。如果您从 ODataController(或 EntitySetController)派生,您将自动获得仅针对该控制器的 OData 支持。它不应该像现在这样影响其余的控制器。您还应该使用 config.Routes.MapODataRoute 而不是 EnableOData。

您可以使用以下说明安装我们最新的夜间版本:

http://blogs.msdn.com/b/henrikn/archive/2012/06/01/using-nightly-asp-net-web-stack-nuget-packages-with-vs-2012-rc.aspx

在这一点上它应该是相当稳定的。

于 2013-01-29T12:08:42.833 回答