У меня есть основное веб-приложение .net с XmlDocument, оно не возвращает декларации, даже без изменений.
У меня есть этот код
[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
};
}
При этом мне не нужны Consumes, Produces и AddXmlSerializerFormatters при запуске.
Если кто-то знает лучший способ, я готов попробовать.