我正在将 Web 服务迁移到 ASP.NET Web Api 2,并且几乎在第一个障碍中遇到了麻烦。
我想做这个:
public class SomeController : ApiController
{
[Route("some\url")]
public object Get()
{
return { Message = "Hello" };
}
}
并且能够向服务询问“application/json”或“application/xml”(或实际上任何其他潜在格式,例如 Message Pack),并获得序列化响应。但它似乎只适用于 JSON。
我已经阅读了这篇文章并看到了文档,其中明确指出该框架无法将匿名类型序列化为 XML(严重),并且解决方案是不使用 XML(严重)。
当我尝试调用它并请求 XML 作为响应类型时,我得到
The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'.
我不会取消对想要请求 XML 的客户的支持——但我真的找不到解决这个问题的方法——我能做什么?
编辑
我已经添加了这些:
System.Web.Http.GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
config.Formatters.Insert(0, new System.Net.Http.Formatting.JsonMediaTypeFormatter());
config.Formatters.Insert(0, new System.Net.Http.Formatting.XmlMediaTypeFormatter());
根据Dalorzo的回答,但这没有什么区别。
为澄清起见,当我application/json
使用application/xml
.