【发布时间】:2019-01-09 17:42:56
【问题描述】:
我有一个带有 XmlDocument 的 .net 核心 Web 应用程序,即使没有修改,它也不会返回声明。
我有这个代码
[HttpPost]
[Consumes("application/xml")]
[Produces("application/xml")]
public ActionResult<XmlDocument> GW1()
{
XmlDocument xmlDocRec = new XmlDocument();
xmlDocRec.Load(Request.Body);
return Ok(xmlDocRec);
}
请求
<?xml version="1.0" encoding="utf-8"?>
<GR User="User1" PropertyCode="90001045">
<GW>1</GW>
</GR>
回应
<GR User="User1" PropertyCode="90001045">
<GW>1</GW>
</GR>
我在启动中有这个
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddXmlSerializerFormatters();
我需要回复<?xml version="1.0" encoding="utf-8"?>,但我不知道为什么它不返回。在 xmlDocRec.InnerXml 和 xmlDocRec.OuterXml 中存在。
我没有作为参数和响应的类,我不能将它用于需求,因为我使用 Request.Body
显然我使用 xmlDocRec,我添加和更新元素,但结果是相同的。当我使用 xmlDocRec 时,xmlDocRec.InnerXml 和 xmlDocRec.OuterXml 包含<?xml version="1.0" encoding="utf-8" standalone="no"?>。稍后,我将需要删除standalone="no",因为它不能响应。
--- 编辑
我不知道这是否是正确的方式,但现在我正在使用这个
[HttpPost]
public ContentResult GW1()
{
XmlDocument xmlDocRec = new XmlDocument();
xmlDocRec.Load(Request.Body);
return new ContentResult
{
ContentType = "application/xml",
Content = xmlDocRec.OuterXml,
StatusCode = 200
};
}
这样,我就不需要在启动时使用、生产和 AddXmlSerializerFormatters。
如果有人知道更好的方法,我愿意尝试。
【问题讨论】:
-
是否需要使用XmlDocument? XDocument 呢?
-
是的,我需要使用 XmlDocument
标签: c# xml asp.net-core .net-core xmldocument