Asp.net core 在作webapi项目的时候,默认是只返回json格式的数据的,若是想要开启xml数据返回,须要在startup里配置以下:web
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); services.AddMvc() .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); }) .AddXmlDataContractSerializerFormatters(); }
这样就能够经过ajax的accept来控制请求须要返回的数据格式了。ajax
这里须要注意:AddXmlDataContractSerializerFormatters能够将匿名属性式化为xml,而AddXmlSerializerFormatters直接会忽略dynamic/object类型的属性。json
转换为xml格式化的时候你可能会遇到奇葩的问题,以下变成,xml格式中会无缘无故的多出不少d2p1前缀,那么如何移除xml格式里的d2p1呢?api
产生这个问题的缘由是由于构造返回结果的多个对象不在同一个命名空间下面,只须要将其放在同一个命名空间便可解决这个问题spa
参考文章:http://stackoverflow.com/questions/6351425/get-rid-of-d2p1-in-xml-created-with-datacontract-in-serialized-class.net