XML后返回“ 405不支持的媒体类型”

时间:2019-07-18 03:15:30

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

我正在开发Web API来上传XML文件,但是当我尝试将XML文件发送到路由时,出现以下错误:

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
    "title": "Unsupported Media Type",
    "status": 415,
    "traceId": "80000018-0000-ff00-b63f-84710c7967bb"
}

我正在通过Postman进行测试,我的控制器具有以下功能:

namespace NFEApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class UploadController : ControllerBase
    {
        // POST api/upload
        [HttpPost]
        public string Post([FromBody] XmlElement request)
        {
            return request.OuterXml;
        }
    }
}

添加到标题“内容类型:application / xml” ,将XML文件发送为“二进制”,将XML文本发送为“原始”,类型为“ XML(application / xml)”没事。我该怎么办?

2 个答案:

答案 0 :(得分:2)

您需要按如下所示在ConfigureServices中添加AddXmlSerializerFormatters(),以便可以将对象与XML进行序列化:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().AddXmlSerializerFormatters().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

有关如何上传xml文件的更多详细信息,您可以参考here

答案 1 :(得分:-1)

如果您将XML作为原始文本发布在正文中,则只需在API方法中使用字符串作为参数即可。

namespace NFEApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class UploadController : ControllerBase
    {
        // POST api/upload
        [HttpPost]
        public string Post([FromBody] string xml)
        {
            return xml;
        }
    }
}

另一种方法是在API方法中将 IFormCollection 作为参数,并以 multipart / form-data 的形式发送表单。