我有一个 ASP.Net Web API 项目,它已经包含以 JSON 格式返回结果的 Controller 。现在我必须添加应该只接收和返回 XML 的新 Controller 。我知道我可以使用以下选项来推送 Controller 以返回 XML 序列化对象:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true
但是,如果我这样做,我希望旧 Controller 也将返回 XML 格式的数据,对吗?这不是我需要的。那么,如何才能实现我的目标并仅从某些 Controller 返回 XML 序列化对象?谢谢你。
更新
我尝试过建议的方法,但它对我不起作用。我正在使用 Fiddler 进行测试。请注意结果仍然是 JSON(最后一个截图)这里是附加信息:
Controller :
请求类:
响应类:
在 Fiddler 中请求:
Fiddler 中的响应:
最佳答案
内容协商或序列化不是 Controller 应该关心的事情。
开箱即用的 ASP.NET Web API 可以返回 XML 和 JSON 内容,客户端可以通过设置 Accept HTTP header 来请求某种格式。
将其设置为:
Accept: application/json
如果你想取回 JSON
Accept: application/xml
如果你想取回 XML
编辑:
另请注意,Web API 默认使用 DataContractSerializer,在您的评论中回答问题:
[DataContract(Namespace = "schemas.datacontract.org/2004/07/Test.Models" )]
public class TheThing
{
[DataMember]
public string Name { get; set; }
[DataMember(Name = "contentname")]
public string ContentName { get; set; }
}
关于controller - ASP.NET Web API。一个项目中的 JSON 和 XML 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15347652/