首页 > 解决方案 > ASP.NET Core Web API:xmlns 不是预期的

问题描述

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

我的控制器动作:

[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'>不是预期的。

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

也许我在这里遗漏了一些东西?有任何想法吗?

标签: c#asp.net-core-webapixml-formatting

解决方案


xml namespace在有效负载中应用 an时xml,您还必须指出相应的模型/类正在使用并期待这个命名空间。

为此,您可以使用XmlRootAttribute.

[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; }
}

推荐阅读