我的代码是
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()
的第二个参数? 最佳答案
我是否误解了Request.CreateResponse()的第二个参数
是的,你有。第二个参数就是值本身。您将StringContent
作为T value
传递,而不是让CreateResponse
使用传递的正确内容类型为您序列化。您看不到数据的原因是CreateResponse
可能不了解如何正确序列化StringContent
类型的对象。
所有你需要的是:
return Request.CreateResponse(HttpStatusCode.OK, data, "application/json"));