25

我有一个 ASP.NET MVC WEB API。由于几个原因(由于没有授权而重定向..),我不能只使用一个简单的对象并在我的控制器方法中返回它。因此我需要允许我重定向的 HttpResponseMessage 类。

目前我正在这样做:

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound };
var formatter = new JsonMediaTypeFormatter();
response.Content = new ObjectContent<Response>(response, formatter, "application/json");

.. 将序列化为 JSON 的对象获取到 HttpResponseMessage 的内容中。不知何故,我觉得还有另一种更好的方法可以做到这一点。有什么想法吗?

4

1 回答 1

32

你可以做:

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound };
Request.CreateResponse<Response>(HttpStatusCode.OK, response);

默认情况下,Web API 将根据 HTTP 请求标头中指定的 Content-Type 设置响应格式,但 CreateResponse 方法有一些重载,您可以在其中指定类型格式化程序。

如果这是您想要的,您还可以删除 Web API XML 序列化程序以强制所有响应为 JSON - 我认为这是 HttpConfiguration 上的 Formatters.Remove 方法。

于 2013-02-14T15:05:21.420 回答