HttpResponseMessage的内容为JSON

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

目前我这样做:

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

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

你可以做:

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

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

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