如何配置OData不处理Web Api中的非odata异常

时间:2013-01-29 08:32:43

标签: asp.net-web-api odata

我想在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设置。感谢您的帮助。

1 个答案:

答案 0 :(得分: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

此时应该非常稳定。