Asp.net core 在做webapi項目的時候,默認是只返回json格式的數據的,如果想要開啟xml數據返回,需要在startup里配置如下:
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); services.AddMvc() .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); }) .AddXmlDataContractSerializerFormatters(); }
這樣就可以通過ajax的accept來控制請求需要返回的數據格式了。
這里需要注意:AddXmlDataContractSerializerFormatters可以將匿名屬性式化為xml,而AddXmlSerializerFormatters直接會忽略dynamic/object類型的屬性。
轉換為xml格式化的時候你可能會遇到奇葩的問題,如下變成,xml格式中會平白無故的多出很多d2p1前綴,那么如何移除xml格式里的d2p1呢?

產生這個問題的原因是因為構造返回結果的多個對象不在同一個命名空間下面,只需要將其放在同一個命名空間即可解決這個問題
參考文章:http://stackoverflow.com/questions/6351425/get-rid-of-d2p1-in-xml-created-with-datacontract-in-serialized-class
