2

我正在尝试构建一个将 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 中删除时,我得到了正确的响应。

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

4

1 回答 1

2

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; }
}
于 2019-08-31T15:53:52.917 回答