5

PageResultを返すODataControllerがあります。

APIの例:

public PageResult<Customer> Get(ODataQueryOptions options) {
// cut some stuff out...

    PageResult<Customer> result = new PageResult<Customer>(
        searchResults as IEnumerable<Customer>,
        Request.GetNextPageLink(),
        Request.GetInlineCount());
    return result;

これをデバッグすると、問題がないようで、PageResultクラスが正しく構築されて返されます。Web側で..

Webの例

using (var client = new HttpClient()) {
    client.BaseAddress = new Uri(testURL);
    string searchUrl = "api/customer?$top=1&$skip=0";
    client.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json;odata=verbose"));
    HttpResponseMessage response = client.GetAsync(searchUrl).Result;

応答はStatusCode406であり、コンテンツが受け入れられなかったことを示す理由フレーズが含まれています。これは、新しいMediaTypeWithQualityHeaderValue( "application / json")を定義した場合にも行われます。

ビューに渡す前にコントローラーでこのApiを正常に使用するには、何を変更する必要がありますか?

4

1 に答える 1

4

ODataサービスを構築する最初の2つのステップが欠けていると思います。ODataControllerは、その名前が示すように、ODataルートでのみ機能します。ODataサービスを表すEDMモデルを構築し、そのEDMモデルを公開するODataルートを追加する必要があります。ODataサービスの構築方法の詳細については、この公式ドキュメントとブログ投稿を参照してください。

于 2013-03-28T16:25:21.937 に答える