2013-03-25 14 views
5

私はPageResultを返すODataControllerを持っています。OData.PageResult <T>を受け取ったら、406を避けるにはどうすればいいですか?

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例

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; 

応答は、コンテンツが受け入れられない旨の理由句で、のStatusCode 406です。新しいMediaTypeWithQualityHeaderValue( "application/json")を定義すると、これも実行されます。

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

答えて

4

ODataサービスを構築する最初の2つの手順が欠落していると思います。 ODataControllerは、名前が示すように、ODataルートでのみ動作します。 ODataサービスを表すEDMモデルを作成し、そのEDMモデルを公開するODataルートを追加する必要があります。 ODataサービスを構築する方法の詳細については、official documentationとブログpostを参照してください。

関連する問題