Member 11906002 Ответов: 0

Динамический 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 )

0 Ответов