2016-02-09 10 views
6

Kodowania usługi internetowej C# WebApi 2 i mam pytanie dotyczące zwrotu HttpStatusCode z funkcji serwisu WWW IQueryable<T>.Jak mogę zwrócić HttpStatusCode z IQueryable <T>?

Jeśli funkcja serwis internetowy zwraca pojedynczy obiekt, co następuje mogą być łatwo wykorzystane:

public async Task<IHttpActionResult> GetItem(int id) 
{ 
    return Content(HttpStatusCode.Unauthorized, "Any object"); 
} 

w następującej sytuacji, nie jestem pewien, w jaki sposób powrócić określonej HttpStatusCode:

public IQueryable<T> GetItems() 
{ 
    return Content(HttpStatusCode.Unauthorized, "Any object"); 
} 

Czy mogę prosić o pomoc?

Odpowiedz

5

Można rzucać HttpResponseException z odpowiednim StatusCode

public IQueryable<T> GetItems() 
{ 
    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("Any object") }); 
} 
0

W pierwszej sytuacji, nadal będzie zwrócenie obiektu w metodzie Content, np

public IHttpActionResult GetItem(int id) 
{ 
    return Content(HttpStatusCode.Unauthorized, "Any object"); 
} 

Kiedy Wykonanie tej metody sprawi, że klient zostanie zwrócony na numer "Any object". W Web API 2 IHttpActionResult jest w istocie fantazyjną fabryką około HttpResponseMessage. Jeśli zignorujesz że zwracany typ metody jest IHttpActionResult można zwrócić IQueryable zastępując „każdy obiekt” z queryable, np:

public IHttpActionResult GetItem(int id) 
{ 
    IQueryable<object> results; 
    return Ok(results); 
} 

Niektórzy Więcej informacji na temat wyników działań w sieci Web API można znaleźć tutaj :

http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/action-results

Powiązane problemy