4

コントローラーのいくつかのアクション メソッドに対して、Web Api で OData を使用したいと考えています。何が起こっているのかというと、Web Api で OData を有効にすると、エラー メッセージの形式がすべての error に対して変更されます。特定のコントローラー/アクション ルートに対してのみ 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 の間で行った大きな変更の 1 つは、EnableOData 拡張メソッドを完全に削除したことです。OData フォーマッターをグローバルに登録することは、OData コントローラーであるかどうかに関係なくコントローラーに影響を与えるため、悪い考えであることがわかりました。

そのため、OData の v1 リリースと現在のナイトリー ビルドでは、ODataController という新しい基本クラスを追加しました。ODataController (または EntitySetController) から派生する場合は、そのコントローラーだけの OData のサポートを自動的に取得します。現在のように残りのコントローラーに影響を与えるべきではありません。また、EnableOData の代わりに config.Routes.MapODataRoute を使用する必要があります。

次の手順を使用して、最新のナイトリー ビルドをインストールできます。

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 に答える