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; }
}
我正在尝试构建一个 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
.
[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; }
}