私は現在、あなたがリンクした Beta Package を使用して OData サポートも試しています。これはベータ パッケージであり、リリースまでに変更される可能性があることに注意してください。私は同じ問題にぶつかりました。現在、Microsoft は Web Api で OData v3 のサポートを提供することを計画しているようです。ODataMediaTypeFormatter を見ると、これが明らかになります。
OData v3 には、次の 3 つの形式があります。
- アトム (
application/atom+xml
)
- JSON 詳細 (
application/json;odata=verbose
)
- JSON ライト (
application/json;odata=light
)
Atom は唯一の OData の既定の XML 形式です。OData v3 のデフォルトの JSON 形式は JSON ライトです。古い OData v2 JSON 形式は、OData v3 で JSON Verbose になったものです。
これは、仕様(v20120705) セクション 2.2.5.1 でサポートされており、Accept および対応する応答ヘッダーがリストされています。
application/json;odata=verbose ->  application/json;odata=verbose
アプリケーション/json;odata=光  -> アプリケーション/json;odata=光
application/json -> バージョン 1.0 およびバージョン 2.0 の応答の場合: application/json;odata=verbose. バージョン 3.0 応答の場合: application/json;odata=light
残念ながら、彼らはまだ JSON light を指定していません (セクション 2.2.5.1.3、私の強調):
JSON ライト形式は、OData 3.0 プロトコルでのみ定義された新しい形式であり、表現にメタデータ情報を含めないことで小さいサイズに最適化します。詳細形式は、OData 1.0、2.0、および 3.0 プロトコルで定義された既存の JSON ベースの形式を表し、インスタンスの表現と共にメタデータ情報を含みます。JSON light content-type の形式は、このバージョンのドキュメントでは定義されていません。
ただし、JSON Light 形式が JSON Verbose 形式の適切なサブセットになることを期待しています。ODataMediaTypeFormatter の現在の実装はapplication/json;odata=verbose
、application/atom+xml
ヘッダーにのみ応答するか、ATOM にフォールバックします。興味深いことに、指定すると406$format=json
が返されるようです。
軽量フォーマットが詳細フォーマットの適切なサブセットであると仮定する暫定的な解決策が必要な場合は、MediaTypeFormatter にapplication/json
要求に応答するように指示できます。これにより、accept ヘッダーの指定を省略できるため、jQuery から OData を操作するのがはるかに簡単になります。 :
ODataMediaTypeFormatter odataFormatter = new ODataMediaTypeFormatter(model);
odataFormatter.SupportedMediaTypes.Add(MediaTypeHeaderValue.Parse("application/json"));