首页 > 解决方案 > ASP.NET Core 2.2,XML 输入格式化程序

问题描述

我正在使用 asp.net core 2.2 并尝试允许 XML 的附加内容类型值。所以我这样配置Startup.cs

services.AddMvc(options =>
        {
            options.ReturnHttpNotAcceptable = true;
            options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
            options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
        })
        .SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 

事实上,我最终获得415 Unsupported Media Type了邮递员的地位。有没有人成功添加 XML 内容类型值?

作者控制器.cs:

    [HttpPost]
    public ActionResult CreateAuthor([FromBody] AuthorForCreationDto author)
    {
        ...
    }

在此处输入图像描述

在此处输入图像描述

标签: xmlrestasp.net-core-2.2inputformatter

解决方案


您需要设置RespectBrowserAcceptHeader为 true 以允许内容协商。

// Add XML Content Negotiation
config.RespectBrowserAcceptHeader = true;


services.AddMvc(options => {
    //Enable this to allow content negotiation.
    options.RespectBrowserAcceptHeader = true;

    options.ReturnHttpNotAcceptable = true;
    options.OutputFormatters.Add(new XmlDataContractSerializerOutputFormatter());
    options.InputFormatters.Add(new XmlSerializerInputFormatter(options));
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 

推荐阅读