Request.CreateResponse versus response.Content?



我的代码是

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

,它可以很好地返回一些json数据。

后来我注意到Request.CreateResponse()可以接受第二个参数T value,其中valuethe 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()的第二个参数?

我是否理解错了request . createrresponse()的第二个参数

是的,你有。第二个参数就是值本身。您将StringContent作为T value传递,而不是让CreateResponse用您传递的适当内容类型为您序列化它。看不到数据的原因可能是CreateResponse不知道如何正确序列化StringContent类型的对象。

你只需要:

return Request.CreateResponse(HttpStatusCode.OK, data, "application/json"));

相关内容

  • 没有找到相关文章

最新更新