C# Request.CreateResponse与response.Content?

C# Request.CreateResponse与response.Content?,c#,httpresponse,C#,Httpresponse,我的密码是 var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent( JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json"); return response; 通

我的密码是

var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(
                             JsonConvert.SerializeObject(data),
                             Encoding.UTF8, "application/json");
return response;
通过返回一些json数据,它可以正常工作

后来我注意到
Request.CreateResponse()
可以接受第二个参数
T value
,其中
是HTTP响应消息的
内容。所以我试着把上面的三行压缩成一行

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.CreateResponse()的第二个参数

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

您所需要的只是:

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