Динамический frombody для XML
Я использую приведенный ниже код в web api .net core для получения содержимого тела запроса, и он отлично работает для ввода JSON, т. е. тип контента - "application/json"
[HttpPost]
public void Post([FromBody] динамические сообщения)
{}
Но когда я передаю xml в тело запроса, т. е. тип контента - "application/xml", было выброшено исключение "недопустимая операция". Есть ли какой-нибудь способ получить содержимое тела запроса динамически для ввода XML?
Что я уже пробовал:
Сослался на нижеприведенную ссылку
tps://www.hanselman.com/blog/TinyHappyFeatures2ASPNETWebAPIInVisualStudio2012.aspx
Цитата:
Скотт,
Знаете ли вы в любом случае, что динамический параметр будет работать для запроса, содержащего XML?
Например:
Почта http://localhost:52753/api/Test HTTP/1.1
Агент Пользователя: Fiddler
Хост: localhost:52753
Принять: приложение/xml
Content-Type: application/xml; charset=utf-8
<root>
<сообщение>Привет
и пусть это свяжут в:
публичный динамический пост([FromBody]dynamic xml)
{
возвращать XML;
}
--------------------
Энди Коэн
Четверг, 10 января 2013 г. 6:11:52 UTC
Энди - нет, но это не проблема WebAPI. Я не думаю, что в .NET есть какие-либо синтаксические анализаторы XML, которые используют Dynamic. Если бы они были, вы могли бы быстро написать модель связующего.
David_Wimbley
Вы назвали .net core, так что я не уверен, что это то же самое исправление, но это сработало в web api для меня в .net 4.6
GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true;
Вы помещаете это в свой Global.asx в методе Application_Start (). Опять же, я не уверен, что это применимо в .net core, так как я не так хорошо знаком с этим, но это то, что я должен был сделать, чтобы заставить xml работать.
Также следует отметить, что при этом мне не нужно было использовать dynamic, я просто использовал имя класса в сигнатуре метода действия контроллера. Например, общественные IHttActionResult метод mymethod([FromBody] значение MyxmlClass )