Я действительно удивлен этой проблемой, потому что помню, как преуспел в ней в более ранней версии .NET CoreЯ работаю над приложением .NET Core 2.2, которое теперь должно вызываться другим приложением (разработанным извне), которое может публиковать только xml ....
Это мой метод ConfigureServices:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddXmlSerializerFormatters();
}
Это мой контроллер:
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// POST api/values
[HttpPost]
public ActionResult<object> Post([FromBody] object value)
{
return ("Hi", "Hi2");
}
}
Следующие запросы вызывают ответ с кодом состояния 200:
POST http://localhost:58774/api/values
Content-Type: application/json
Accept: application/xml
User-Agent: vscode-restclient
Accept-Encoding: gzip
{"a":5}
, который дает мне xml в качестве ответа и
POST http://localhost:58774/api/values
Content-Type: application/json
Accept: application/json
User-Agent: vscode-restclient
Accept-Encoding: gzip
{"a":5}
, который дает JSON в качестве ответа.
Однако этот вызов приводит к ответу с кодом состояния 500 (что является именно моей проблемой):
POST http://localhost:58774/api/values
Content-Type: application/xml
Accept: application/xml
User-Agent: vscode-restclient
Accept-Encoding: gzip
<A a="5"/>
Так что теперь у меня проблемы.Работает форматирование XML, которое становится понятным, если я принимаю в качестве типа вывода.Однако, если я опубликую его как Content-Type и протестирую его, я получу 500. Я также попробовал этот (старый) подход , но, похоже, он не работает.NET Core 2.2.Что я делаю неправильно?Как я могу опубликовать свой xml в .net core 2.2?
Обновление после полезного замечания. Вот исключение, вызывающее 500:
Система.InvalidOperationException: в XML-документе произошла ошибка (1, 11).---> System.InvalidOperationException: не ожидалось.
Однако, если я добавлю xmlns (на основе this ), у меня все равно будет 500:
POST http://localhost:5000/api/values
Content-Type: application/xml
Accept: application/xml
User-Agent: vscode-restclient
Accept-Encoding: gzip
<f:table xmlns:f="https://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
Тогда сообщение об исключении:
System.InvalidOperationException: в XML-документе произошла ошибка (1, 56).---> System.InvalidOperationException: https://www.w3schools.com/furniture'> не ожидалось.
Возможно, мне нужно изменить мой xml.Как?Даже пример из w3cschools мне не помогает.