Я подхожу к ASP. NET Ядро пользуется запросом клиента о веб-сервисе. Запрос представляет собой веб-метод, который возвращает данные в формате XML
, например:
<?xml version="1.0" encoding="UTF-8"?>
<Person>
<Name>John</Name>
<Surname>Doe</Surname>
. . .
</Person>
Я могу сделать так, чтобы веб-служба возвращала данные text/xml
в соответствии с запросом, форсируя их в методе ConfigureServices
внутри Startup.cs
как показано ниже:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddMvc(options =>
{
options.Filters.Add(new ProducesAttribute("text/xml"));
}).AddXmlSerializerFormatters();
}
Проблема в том, что когда я вызываю метод, который должен возвращать данные, у меня нет заголовка объявления XML, требуемого клиентом по некоторым причинам:
<?xml version="1.0" encoding="UTF-8"?>
Это результат:
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>John</Name>
<Surname>Doe</Surname>
</Person>
Вот метод:
[HttpGet("getperson")]
public Person GetPerson()
{
return new Person
{
Name = "John",
Surname = "Doe",
};
}
А вот класс Person
:
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
}
Я провел много исследований, но все, что я нашел, не помогло мне вообще. Я хотел бы использовать функции инфраструктуры, сериализующие мои классы, вместо того, чтобы строить структуру XML узел за узлом, поэтому я надеялся на некоторые параметры внутри служб, которые позволили бы мне сделать это.
При необходимости можно внести любые изменения в метод GetPerson
, это действительно очень упрощенный тест.
Заранее спасибо за помощь!