2013-03-25 18 views
5

我有一個ODataController返回一個PageResult。如何在接收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側..

的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服務的前兩個步驟。正如名稱所述,ODataController僅適用於OData路由。您需要構建一個代表您的OData服務的EDM模型,並添加一條OData路線以顯示該EDM模型。有關如何構建OData服務的詳細信息,請參閱此official documentation和博客post

相關問題