2013-02-14 17 views
16

Mam api web asp.net-mvc. Z kilku powodów (przekierowanie z powodu braku autoryzacji ...) nie mogę po prostu użyć prostego obiektu i zwrócić go w mojej metodzie sterownika. dlatego potrzebuję klasy HttpResponseMessage, która pozwala mi przekierować.Zawartość komunikatu HttpResponseMessage jako JSON

obecnie robię to

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound }; 
var formatter = new JsonMediaTypeFormatter(); 
response.Content = new ObjectContent<Response>(response, formatter, "application/json"); 

zdobyć przedmiot, zserializowaną jako JSON do treści HttpResponseMessage. W jakiś sposób mam wrażenie, że istnieje inny, lepszy sposób na zrobienie tego. jakieś pomysły na ten temat?

Odpowiedz

24

Można zrobić

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound }; 
Request.CreateResponse<Response>(HttpStatusCode.OK, response); 

Domyślnie Web API ustawi format odpowiedzi na podstawie Content-Type określony w nagłówku żądania HTTP, ale istnieją pewne przeciążenia w sprawie metody CreateResponse gdzie można określ formatujący typ.

Możesz również usunąć serial serialu web api xml, aby wymusić, aby wszystkie odpowiedzi brzmiały JSON, jeśli tego chcesz - z góry mojej głowy myślę, że jest to Formater.Rozpocznij metodę w HttpCOnfiguration.

+0

dziękuję! działa w porządku! zmusiłem do serializowania wszystkiego do json :) – gosua

Powiązane problemy