在我的一个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级别添加了媒体类型格式化程序。
谢谢!
答案 0 :(得分:63)
HttpResponseMessage<T>
被移除。现在,我们输入HttpResponseMessage
ObjectContent
如果使用默认的无参数构造函数手动创建HttpResponseMessage
,则没有可用于执行内容协商的请求上下文 - 这就是您需要指定格式化程序或手动执行内容协商的原因。
我知道你不想这样做 - 所以请改用它:
HttpResponseMessage response = Request.CreateResponse<MyObject>(HttpStatusCode.OK, objInstance);
这将依赖于针对请求执行的内容协商来创建响应消息。
最后,您可以在此处阅读有关内容协商的更多信息On this link