6

DataServiceContext を使用して odata サービスを使用しており、データを json 形式で返したいと考えています。

私はこのようなものを見ています: DataServiceContext を使用した Odata クエリと json としての結果の取得

送信リクエストイベントにリクエストヘッダーを追加しようとすると。フィドラーでそのヘッダーが表示されません。私が確認したイベントは発火していますが。

「context.Format.usejson」に出くわして検索しようとしましたが、理解できるものは見つかりませんでした。誰か助けてくれませんか? ODataLib を使用して WCF Data Services サービス操作と JSON を呼び出す

私の目標は、OData サービスを使用し、DataServiceContext を使用して JSON 形式で結果を取得することです。

4

2 に答える 2

11

: これらの手順は、サービスの最大プロトコル バージョンが 3 以上の場合にのみ機能します。OData のバージョン 3 では、新しい JSON 形式が導入されました。WCF Data Services クライアントは、この JSON 形式のみをサポートしています。(古い JSON ペイロードには"__metadata"、上部に や のようなものがあり"d":{...}ます。新しい JSON 形式では"odata.metadata""odata.type"、 などのようなものが表示されます。)

まず、バージョン 5.1 以降の WCF Data Sevrices クライアント ライブラリ (Visual Studio には古いバージョンが付属しています) と、Visual Studio で "サービス参照の追加" を機能させるツールの更新バージョンがあることを確認してください。

最新のツール インストーラーは、http: //www.microsoft.com/en-us/download/details.aspx?id=35840からダウンロードできます。

インストールしたら、NuGet パッケージ マネージャー コンソールで次のコマンドを発行して、最新バージョンの WCF Data Services クライアントにアップグレードすることをお勧めします。

Install-Package Microsoft.Data.Services.Client

最新のクライアント ライブラリにアップグレードすると、クライアントで JSON を問題なく使用できるようになります。Visual Studio でプロジェクトを右クリックし、[サービス参照の追加] を選択して、サービスのメタデータ ドキュメントの URL を入力します。v5.1 以降では、JSON をサポートするために必要なサービスの完全なモデルがプルダウンされます。

「サービス参照の追加」は、 のサブクラスを自動生成しDataServiceContextます。(Visual Studio のソリューション エクスプローラーで [すべてのファイルを表示] を選択し、サービス参照の背後にあるコードを展開すると、この生成されたコードを確認できます。) たとえば、 に対して [サービス参照の追加] を実行するとhttp://services.odata.org/V3/OData/OData.svc/$metadata、クライアント ライブラリはクラスを生成します。と呼ばれるDemoService。直接ではなくその派生クラスを使用するDataServiceContextと、 を呼び出すことができます.Format.UseJson()。例えば:

var context = new DemoService(new Uri("http://services.odata.org/V3/OData/OData.svc");
context.Format.UseJson();
于 2013-06-12T08:23:40.487 に答える
3

以下のコードに示すように、OnContextCreated 部分メソッド内にサービス モデルをロードすると、パラメーターを指定せずに context.Format.UseJson メソッドを呼び出すことができます。

public partial class DemoService
{
    partial void OnContextCreated()
    {
        this.Format.LoadServiceModel = GeneratedEdmModel.GetInstance;
    }
}
于 2013-09-04T20:33:17.227 に答える