【问题标题】:Defaulting to xml serialization in asp.net core在 asp.net 核心中默认为 xml 序列化
【发布时间】:2019-03-28 10:11:29
【问题描述】:

我正在尝试创建一个基于 asp.net 核心的 Web-Api。我的要求是,它应该默认支持xml序列化而不是json
我添加了

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
                .AddXmlSerializerFormatters();

但是,默认的序列化器仍然是 json。
我需要它返回xml 而无需客户端指定

{"Accept":"application/xml"}

【问题讨论】:

  • 您希望整个响应是 XML 还是只是响应中的对象是 XML。
  • 我也可以将内容/对象单独处理为 xml,因为它是在客户端程序中反序列化回对象的内容
  • 当您反序列化 xml 时,您需要类或必须创建自定义解析器代码。Json 您可以在没有类的情况下进行序列化。你有课吗?

标签: c# xml asp.net-core serialization


【解决方案1】:

正如here 所说,您必须强制您的应用程序生成 XML 而不是 JSON:

services.AddMvc(opt =>
{
    opt.Filters.Add(new ProducesAttribute("application/xml"));
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
    .AddXmlSerializerFormatters();

【讨论】:

    【解决方案2】:

    要更改默认序列化程序,您可以尝试

    public void ConfigureServices(IServiceCollection services)
    {
    
        services.AddMvc(options => {
            options.OutputFormatters.Insert(0, new XmlDataContractSerializerOutputFormatter());
        }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-02
      • 2019-02-21
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      相关资源
      最近更新 更多