csrss Ответов: 2

Пост обработки не работает в контроллере


Simples asp .net web api project, контроллер по умолчанию, простейший возможный обработчик сообщений:
[HttpPost]
        public void Post([FromBody]string value)
        {
            int a = 0;
        }


Отправка простого почтового запроса с почтальоном по адресу:
http://localhost:port/api/values


Я могу отправлять только необработанные данные типа application/json - отправка чего-либо еще приводит к тому, что действие контроллера вообще не выполняется, но независимо от того, что я отправляю,
value
в обработчике всегда есть null. Может ли кто-нибудь указать, что я делаю неправильно?

Что я уже пробовал:

Я перепробовал все, что мне известно.

2 Ответов

Рейтинг:
4

Richard Deeming

По умолчанию WebAPI связывается только с запросами JSON или XML (или форматы, поддерживаемые любыми другими медиа-форматерами, которые вы настроили) Обертывание строки в кавычки эффективно превратит ее в полезную нагрузку JSON, но вам нужно будет следить за проблемами кодирования, особенно если ваша строка уже содержит кавычки.

Если вы просто хотите захватить необработанное тело запроса, есть и другие способы сделать это:
Принятие сырого содержимого тела запроса с помощью ASP.NET Web API - веб-журнал Рика Штрала[^]

Самый простой вариант это наверное:

[HttpPost]
public async Task Post()
{
    string rawRequestBody = await Request.Content.ReadAsStringAsync();
    ...
}


Рейтинг:
15

csrss

Ладно, я сам это понял. Чтобы отправить простейшую возможную строку, она должна быть заключена в кавычки. Насколько это было очевидно.