2015-07-25 3 views
2

Мой код былRequest.CreateResponse против ответа. Контент?

var response = Request.CreateResponse(HttpStatusCode.OK); 
response.Content = new StringContent(
          JsonConvert.SerializeObject(data), 
          Encoding.UTF8, "application/json"); 
return response; 

и она отлично работает, возвращая некоторые данные JSON.

Позже я заметил, что Request.CreateResponse() может принять второй параметр T value с value быть the content of the HTTP response message. Поэтому я попытался сжать вышеуказанные три строки в одну строку

return Request.CreateResponse(
      HttpStatusCode.OK, new StringContent(JsonConvert.SerializeObject(data), 
      Encoding.UTF8, "application/json")); 

Но это не работает должным образом. Она возвращает

{ 
    "Headers": [ 
    { 
     "Key": "Content-Type", 
     "Value": [ 
     "application/json; charset=utf-8" 
     ] 
    } 
    ] 
} 

ли я неправильно второй параметр Request.CreateResponse()?

ответ

2

ли я неправильно второй параметр Request.CreateResponse()

Да, у вас есть. Второй параметр - это просто значение. Вы передаете StringContent как T value, вместо того, чтобы позволить CreateResponse сериализовать его для вас с соответствующим типом контента, который вы передаете. Причина, по которой вы не видите никаких данных, состоит в том, что CreateResponse, вероятно, не понимает, как правильно сериализовать объект типа StringContent.

Все, что вам нужно:

return Request.CreateResponse(HttpStatusCode.OK, data, "application/json")); 
Смежные вопросы