asp.net-core - Twilio Messaging Webhook - 不支持的媒体类型 - Asp.net Core 3.1 API

标签 asp.net-core twilio asp.net-core-3.1

我有一个 asp.net core (3.1) web api,它有一个端点来接受 Twilio Messaging Webhook。当我从 postman 本地运行它时,它可以工作,当 webhook 发布时,我得到 415“不支持的媒体类型”

[ApiController]
[Route("[controller]")]
public class TwillioController : TwilioController
{
    [HttpPost("ProcessIncomingMessage")]
    public TwiMLResult ProcessIncomingMessage(SmsRequest incomingMessage)
    {
      Console.WriteLine($"Recieved new SMS from {incomingMessage.From}");
      var messagingResponse = new MessagingResponse();
      messagingResponse.Message("The copy cat says: " +
                                incomingMessage.Body);

      return TwiML(messagingResponse);
    }
  }
当我在 postman 的标题中有 Content-Type:application/json 时它起作用。
我也试过添加
[Consumes("application/x-www-form-urlencoded")]
[Consumes("application/xml")]
并且两者仍然获得不受支持的媒体类型......无法弄清楚 Twilio 发送的是什么,或者我需要做什么才能使其与他们的 webhook 兼容。

最佳答案

正如其他答案所提到的,Twilio 发送内容类型为 x-www-form-urlencoded 的请求。使用 [ApiController] 属性注释的 Controller 中的操作需要在参数上具有 [FromForm] 属性才能工作,如下所示:

[ApiController]
public class TwilioController : ControllerBase
{
    [HttpPost("")]
    public TwiMLResult Post([FromForm] SmsRequest request)
    {
        // do stuff with the SMS request
    }
}
虽然您可以包含 [Consumes] 属性,但这不是必需的。

关于asp.net-core - Twilio Messaging Webhook - 不支持的媒体类型 - Asp.net Core 3.1 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63433831/

相关文章:

asp.net-core - 应使用哪些设置来获取与 .NET Core 项目一起使用的自定义 ItemTemplate?

尚未为指示的区域启用发送短信的 Twilio 权限

c# - 自动将 JWT 加载到 User.Identity (ASP.NET Core 3.1)

c# - 为什么这个 View 模型字符串字段被视为必需的?

c# - ASP.NET Core 2.1 cookie 身份验证似乎具有服务器亲和性

clojure - 在 Clojure REPL 中使用导入的 Java 库

node.js - Twilio statusCallback 实现遇到麻烦

asp.net-core - ASP.NET Core 3.1 HttpClient 仅记录警告和错误

asp.net-core - ASP.NET Core 7 系统.InvalidOperationException : The ConnectionString property has not been initialized