2013-03-25 11 views
5

Bir PageResult döndüren bir ODataController sahibim.Bir OData.PageResult <T> alırken 406'yı nasıl önleyebilirim?

Api Örnek: Bu hata ayıklama

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; 

, sorun olmaması ve doğru bir şekilde inşa edilmiş bir PageResult sınıfı dönmek zorunda gibi görünüyor. Web tarafında ..

Web Örneği

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; 

tepki içeriği kabul edilebilir değildi belirten bir nedeni ifadeyle, bir StatusCode 406 olduğunu. Yeni bir MediaTypeWithQualityHeaderValue ("application/json") tanımladığımda da bunu yapar.

Bu Api'yi denetleyicide görüntüye geçirmeden önce başarılı bir şekilde kullanmam için değiştirmem gerekenler nelerdir?

cevap

4

Bir OData hizmeti oluşturmanın ilk iki adımını kaçırıyorsunuz. ODataController, adından da anlaşılacağı gibi, sadece OData yolları ile çalışır. OData hizmetinizi temsil eden bir EDM modeli oluşturmanız ve bu EDM modelini açığa çıkaran bir OData rotası eklemeniz gerekir. OData hizmetlerinin nasıl oluşturulacağı hakkında bilgi için bu official documentation ve blog'a post bakın.