【问题标题】:Trouble Getting Twilio SMS Response from ASP.NET Core MVC Endpoint从 ASP.NET Core MVC 端点获取 Twilio SMS 响应时遇到问题
【发布时间】:2018-07-03 05:10:08
【问题描述】:

当我设置请求箱时,我得到一个看起来完全正常的响应(见下面的屏幕截图)。当我使用命令时

ngrok http 5000

然后我将响应发送到我的本地 http 端点,如果我在控制器中的 POST 方法没有参数,ngrok 会报告 200OK。即使我添加一个参数([FromBody] 字符串内容),我也会从 ngrok 的控制台中收到 400 错误请求。

我在下面粘贴了我尝试过的几种不同的 POST 方法。我尝试从 controllerbase 和 controller 继承我的控制器并获得相同的行为。

    [HttpPost]
    public string JsonStringBody([FromBody] TwilioSmsModel twilioSmsModel)
    {
        return "";
    }


     POST: api/SmsBody
    [HttpPost]
    public async Task<IActionResult> PostTwilioSmsModel([FromBody] TwilioSmsModel twilioSmsModel)
    public async Task<IActionResult> Post()
    {
        var twilioSmsModel = new TwilioSmsModel();
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        _context.TwilioSmsModels.Add(twilioSmsModel);
        await _context.SaveChangesAsync();

        return CreatedAtAction("GetTwilioSmsModel", new { id = twilioSmsModel.SmsSid }, twilioSmsModel);
    }

如果 github 上有一个使用 asp.net core 2.1 的短信通知示例​​,那将是一个很大的帮助。

【问题讨论】:

    标签: asp.net-core twilio twilio-api


    【解决方案1】:

    这里是 Twilio 开发人员宣传员。您看到的错误很可能与您构建应用程序的方式无关,而是因为 .NET 期望传递一些主机标头以处理您的请求。以及为什么它可以与 requestbin 一起使用。

    您没有在问题中指定任何错误消息,所以这是猜测,但请尝试将您的 ngrok 推荐更改为以下内容:

    ngrok http 5000 -host-header="localhost:5000"
    

    您应该不再看到您收到的400 错误,并且请求应该正常通过。

    希望这会有所帮助。

    【讨论】:

    • 感谢@Marcos,但仍然没有运气。我没有包含错误,因为我不确定如何找到错误。我将我的 statusCallback 设置如下: statusCallback: new Uri("bd621b2c.ngrok.io/api/sms")。我看到的唯一错误是在 ngrok“400 Bad Request”中。我尝试添加 -host-header 并且仍然错误。如何进一步调试?
    • Per Corey Weathers,这解决了问题: public async Task Post([FromForm] TwilioSmsModel twilioSmsModel) {
    • 由于我们离线解决了这个问题,所以在这里更新...看起来您的方法正在尝试从请求正文中检索 HTTP POST 正文。将其更改为 [FromForm] 应该可以解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多