Web API:HttpResponseMessage中的内容

时间:2012-09-24 10:55:42

标签: .net asp.net-web-api httpresponse mediatypeformatter

在我的一个Get请求中,我想返回带有一些内容的HttpResponseMessage。目前我的工作方式如下:

var header = new MediaTypeHeaderValue("text/xml");
Request.CreateResponse(HttpStatusCode.OK, myObject, header);

但是,由于我使用的是静态请求,因此测试起来非常困难。根据我的阅读,我应该能够做到以下几点:

return new HttpResponseMessage<T>(objectInstance);

然而,似乎无法做到这一点。是因为我使用的是旧版本的WebApi / .NET吗?


在旁注中,我发现您可能会创建如下响应:

var response = new HttpResponseMessage();
response.Content = new ObjectContent(typeof(T), objectInstance, mediaTypeFormatter);

令我困惑的是为什么我必须在这里添加一个mediaTypeFormatter。我在global.asax级别添加了媒体类型格式化程序。

谢谢!

1 个答案:

答案 0 :(得分:63)

Beta后,

HttpResponseMessage<T>被移除。现在,我们输入HttpResponseMessage

而不是键入ObjectContent

如果使用默认的无参数构造函数手动创建HttpResponseMessage,则没有可用于执行内容协商的请求上下文 - 这就是您需要指定格式化程序或手动执行内容协商的原因。

我知道你不想这样做 - 所以请改用它:

HttpResponseMessage response = Request.CreateResponse<MyObject>(HttpStatusCode.OK, objInstance);

这将依赖于针对请求执行的内容协商来创建响应消息。

最后,您可以在此处阅读有关内容协商的更多信息On this link