#c# #xml #.net-core #http-post #postman
#c# #xml #.net-ядро #http-post #почтальон
Вопрос:
У меня есть это действие на .Net Core Web API
контроллере под названием HomeController
:
[HttpPost]
public IActionResult TestMethod([FromForm] DocumentDto xml) {
int abc = 0;
return Ok();
}
и модель DocumentDto
:
[XmlRoot(ElementName = "document", Namespace = "")]
public class DocumentDto
{
[XmlElement(DataType = "string", ElementName = "id")]
public string Id { get; set; }
[XmlElement(DataType = "string", ElementName = "content")]
public string Content { get; set; }
[XmlElement(DataType = "string", ElementName = "author")]
public string Author { get; set; }
}
Я также добавил точку останова в int abc = 0;
и использую Postman для выполнения действия, как показано ниже
xml
Для запроса используется следующее
<document>
<id>12345</id>
<content>This is a Test</content>
<author>vchan</author>
</document>
Однако во время отладки xml
переменная имеет null
свойства, как показано ниже
Кроме того, в файл Startup.cs я включил AddXmlSerializerFormatters()
, и он выглядит следующим образом:
services
.AddMvc()
.AddXmlSerializerFormatters()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
Почему xml
не анализируется?
Комментарии:
1. Проверьте xmlbounty. Модели. DocumentDto, который является вашим вводом из метода тестирования, и посмотрите, вводите ли вы xml.
2. Я не понимаю, что вы имеете в виду, говоря «посмотреть, вводите ли вы xml»
3. Где вы читаете xml? Проблема не в синтаксическом анализе. Вы анализируете пустой XML-файл.
4. @jdweng Я не читаю это, поскольку отправляю не
xml
файл, а строку в теле запроса, которая должна быть расшифрована какxml
.
Ответ №1:
На основе вашего запроса необработанный XML должен быть проанализирован, [FromBody]
а не [FromForm]
.
Комментарии:
1. Это сделало это. Теперь
.net
считывает и понимает исходное тело запроса. Спасибо!