Не получается обработать запрос с FormContent в Asp.Net

Я пытаюсь обработать запрос Slack actions (информация по апи здесь https://api.slack.com/interactivity/handling#payloads)

Слак возвращает Form content с ключом payload и значениемjson.

Скриншот с ngrot:

from ngrot

Я пытаюсь обработать запрос таким образом, есть метод

[
  HttpPost,
  Consumes("application/x-www-form-urlencoded"),
  Produces("application/json")
]
public JsonResult Post([FromForm] SlashActionPayload data);

где модель

public sealed class SlashActionPayload
{
    [JsonProperty("payload")] 
    public SlashActionInnerPayload InnerPayload { get; set; }
}

public sealed class SlashActionInnerPayload
{
    [JsonProperty("type")] 
    public string Type { get; set; }

    [JsonProperty("token")] 
    public string Token { get; set; }

    [JsonProperty("actions")] 
    public Action[] Actions { get; set; }
}

public sealed class Action
{
    [JsonProperty("action_id")] 
    public string ActionId { get; set; }

    [JsonProperty("block_id")] 
    public string BlockId { get; set; }

    [JsonProperty("value")] 
    public string Value { get; set; }
}

но SlashActionInnerPayload в SlashActionPayload все время null :((((.

в чем моя ошибка?

p.s. все поля в модели существующие, вот полное значение json ключа payload

{"type":"block_actions","user":{"id":"hidden_id_for_overflow","username":"test_username","name":"test_name","team_id":"hidden_team_id"},"api_app_id":"123123","token":"asdqwgqwg","container":{"type":"message","message_ts":"1634137424.008100","channel_id":"1233123123","is_ephemeral":true},"trigger_id":"2593661540438.1137726068096.f0ecf0f4e9b0d0bf15796e4a519a21f8","team":{"id":"hidden_id_for_overflow","domain":"slack-bots-testing"},"enterprise":null,"is_enterprise_install":false,"channel":{"id":"123123123","name":"random"},"state":{"values":{}},"response_url":"https:\/\/hooks.slack.com\/actions\/hidden_id_for_overflow\/123\/TlMw2CdjHSzZfRLIgZeKrPS3","actions":[{"action_id":"Send","block_id":"lqdK","text":{"type":"plain_text","text":"Send","emoji":true},"value":"https:\/\/cdn.betterttv.net\/emote\/5f50677a6084af6c17196c77\/3x","style":"primary","type":"button","action_ts":"1634138593.509431"}]}

Ответы (1 шт):

Автор решения: bond1k

Решил таким вариантом:

[
  HttpPost,
  Consumes("application/x-www-form-urlencoded")
]
public JsonResult Post([FromForm] IFormCollection collection)
{
  var json = collection["payload"];
  var payload = JsonConvert.DeserializeObject<SlashActionInnerPayload>(json);
→ Ссылка