如何将 xml 输入(请求)传递给 .net core 3.1 上的 Web api
How to pass xml input (request) to Web api on .net core 3.1
我有一个 .net core 3.1 网站 api。我已经尝试了以下但它总是在它命中时变成 null
[HttpPost]
public IActionResult ReturnXmlDocument(HttpRequestMessage request)
{
var doc = new XmlDocument();
doc.Load(request.Content.ReadAsStreamAsync().Result);
return Ok(doc.DocumentElement.OuterXml.ToString());
}
它甚至在调试期间也没有命中它,它还在 fiddler 中显示 415 错误。
Asp.net 核心不再使用 HttpRequestMessage 或 HttpResponseMessage。
因此,如果您想接受 xml 格式请求,您应该执行以下步骤:
1.Install Microsoft.AspNetCore.Mvc.Formatters.Xml NuGet 包。
2.Call AddXmlSerializerFormatters 在 Startup.ConfigureServices.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddXmlSerializerFormatters();
}
3.Apply 控制器 类 的 Consumes 属性或请求正文中应该 XML 的操作方法。
[HttpPost]
[Consumes("application/xml")]
public IActionResult Post(Model model)
{
return Ok();
}
更详细的可以参考Model binding
的官方文档
我有一个 .net core 3.1 网站 api。我已经尝试了以下但它总是在它命中时变成 null
[HttpPost]
public IActionResult ReturnXmlDocument(HttpRequestMessage request)
{
var doc = new XmlDocument();
doc.Load(request.Content.ReadAsStreamAsync().Result);
return Ok(doc.DocumentElement.OuterXml.ToString());
}
它甚至在调试期间也没有命中它,它还在 fiddler 中显示 415 错误。
Asp.net 核心不再使用 HttpRequestMessage 或 HttpResponseMessage。
因此,如果您想接受 xml 格式请求,您应该执行以下步骤:
1.Install Microsoft.AspNetCore.Mvc.Formatters.Xml NuGet 包。
2.Call AddXmlSerializerFormatters 在 Startup.ConfigureServices.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddXmlSerializerFormatters();
}
3.Apply 控制器 类 的 Consumes 属性或请求正文中应该 XML 的操作方法。
[HttpPost]
[Consumes("application/xml")]
public IActionResult Post(Model model)
{
return Ok();
}
更详细的可以参考Model binding
的官方文档