Asp.net web api 如何配置OData而不处理Web Api中的非OData异常

Asp.net web api 如何配置OData而不处理Web Api中的非OData异常,asp.net-web-api,odata,Asp.net Web Api,Odata,我想在Web Api中使用OData来实现控制器中的一些操作方法。发生的情况是,一旦我在Web Api中启用OData,错误消息格式将针对所有错误进行更改。 是否有任何方法仅为特定控制器/操作路由配置Odata 启用OData之前的错误消息如下所示: {"Message":"User Name/Password are invalid ."} 启用OData后的错误消息如下所示: { "odata.error":{ "message":{ "lang":"en-US",

我想在Web Api中使用OData来实现控制器中的一些操作方法。发生的情况是,一旦我在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设置的影响。感谢您的帮助。

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

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

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


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

嗨-我对odata有点陌生,但我想我明白了,无论如何,如果我得到了最新的版本,它是否会像这里的剑道UI网格示例那样支持服务器端排序和过滤:当然,你所要做的就是添加[Queryable]一旦安装了使用“config.Routes.MapODataRoute”所需的OData packageAre,您的操作的属性?我使用的是AttributeRouting包,在我的路由中,它直接在action方法本身上定义。这对OData路由是如何工作的?@YoussefMoussaoui好的,但我想公开reuglar非OData HTTP Get方法,当我公开时(在ODataController中),我注册了一个非OData HTTP路由。。