ASP.NET Core Web API: xmlns 不是预期的

ASP.NET Core Web API : xmlns was not expected

我正在尝试构建一个 API,它将 XML 作为请求数据。

我的控制器操作:

[HttpPost]
[Route("/api/MyApi/CalculateMyPrice")]
public virtual ActionResult<IEnumerable<string>> CalculateMyPrice(Request request)
{}

我的模型类是:

public partial class Request 
{ 
    public RequestHeader ReqHdr { get; set; } 
}

public partial class RequestHeader
{
    public string MsgId { get; set; }
}

和我的 XML 格式设置:

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

但是当我尝试使用 POSTMAN 访问此方法时出现此错误:

InvalidOperationException: <Request xmlns='urn:com.mysystems:api-message.002'> was not expected.

但是当我从请求 XML 中删除 xmlns= 时,我得到了正确的响应。

也许我在这里遗漏了什么?有什么想法吗?

xml 有效负载中应用 xml namespace 时,您还必须指出相应的 model/class 正在使用并需要此命名空间。

为此,您用 XmlRootAttribute.

装饰您的 class
[XmlRoot(Namespace ="urn:com.mysystems:api-message.002")]
public partial class Request
{
    public RequestHeader ReqHdr { get; set; }
}

public partial class RequestHeader
{
    public string MsgId { get; set; }
}