我正在开发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)”没事。我该怎么办?
答案 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 的形式发送表单。