controller - ASP.NET Web API。一个项目中的 JSON 和 XML 响应

标签 controller xml-serialization asp.net-web-api jsonserializer

我有一个 ASP.Net Web API 项目,它已经包含以 JSON 格式返回结果的 Controller 。现在我必须添加应该只接收和返回 XML 的新 Controller 。我知道我可以使用以下选项来推送 Controller 以返回 XML 序列化对象:

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true

但是,如果我这样做,我希望旧 Controller 也将返回 XML 格式的数据,对吗?这不是我需要的。那么,如何才能实现我的目标并仅从某些 Controller 返回 XML 序列化对象?谢谢你。

更新

我尝试过建议的方法,但它对我不起作用。我正在使用 Fiddler 进行测试。请注意结果仍然是 JSON(最后一个截图)这里是附加信息:

Controller :

Controller

请求类:

Request class

响应类:

Response class

在 Fiddler 中请求:

Request in Fiddler

Fiddler 中的响应:

Response in 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/

相关文章:

java - Jackson XML 全局设置容器类型的元素名称

c# - ASP.NET Web API 登录方法

asp.net-web-api - 使用 FluentValidation 进行更深入的数据库验证是不好的做法吗?

model-view-controller - ResponseBody 无法解析为类型

c# - 未设置 ASP.NET MVC 对象引用(向模型添加值)

C# xml序列化必填字段

c# - XML反序列化成不同的类?

asp.net - 如何在其他 Controller 中使用授权用户名

asp.net-mvc - 在 ASP.Net MVC 中使用 System.Guid 作为主键?

c# - 使用 AutoFac 的 MVC Controller 通用注入(inject)