4

示されているように Accept ヘッダーを使用すると、非常に単純なリフレクションベースの OData サンプルが正常に実行され、json が生成されます。ただし、 $format=json パラメータで動作させることはできません。そのパラメーターを追加するたびに、Bad Request が発生します。これによると、うまくいくようです:リンクテキスト

$select などの他のシステム クエリ オプションは正常に機能することに注意してください。これは、VS2010 経由で実行される .Net 4 です。

4

2 に答える 2

4

OData 仕様でサポートされていると記載されていても、.NET 4 WCF データ サービスに対してそのまま使用$format=jsonすることはできません。Microsoft が直接サポートしていない理由は正確にはわかりません。ただし、この状況には 2 つの回避策があります。

まず、少しハッキリと感じる解決策は、リクエストをインターセプトし、クエリ文字列パラメーターを読み取り、リクエストに accept ヘッダーを追加する HttpHandler を作成することです$format=json(問題のあるパラメーターを削除し$format=jsonます)。これについては、このブログ投稿で説明されています。

2 番目の解決策は、少し良いように思えますが、データ サービスを[JSONPSupportBehavior]属性で装飾することです。これはもう少し意味があり、実装が少し簡単です (HttpHandler を構築する必要がないため)。便利なリンクを次に示します。

私は属性のアプローチが好きですが、CodePlex からのダウンロードではなかったらいいのにと思います...まだサポートされているとは思えません。しかし、それは私の意見です。

正直なところ、制御できる場合の最善の方法は、accepts ヘッダーを のリクエストに追加するだけでapplication/json、サービスは JSON 形式の結果を自動的に返します。

これが役立つことを願っています。

于 2010-08-31T02:00:14.823 に答える
0

これに遭遇した人は誰でも... WCF Data Services Toolkitを使用して、DataService ではなく ODataService から継承して、この機能を自動的に有効にすることができるようになりました。

于 2013-04-23T02:47:20.317 に答える