首页 > 解决方案 > 为什么我不能使用 serveo 而不是 ngrok 来隧道连接到托管在 EC2 服务器上的 mvc 应用程序以在 Twilio 上接收 SMS

问题描述

我有一个简单的 asp.net mvc Web 应用程序,它侦听消息并以标准响应回复。它使用 Twilio API 并在

这是代码:

// Code sample for ASP.NET MVC on .NET Framework 4.6.1+
// In Package Manager, run:
// Install-Package Twilio.AspNet.Mvc -DependencyVersion HighestMinor

using Twilio.AspNet.Common;
using Twilio.AspNet.Mvc;
using Twilio.TwiML;

namespace WebApplication1.Controllers
{
    public class SmsController : TwilioController
    {
        public TwiMLResult Index(SmsRequest incomingMessage)
        {
            var messagingResponse = new MessagingResponse();
            messagingResponse.Message("The copy cat says: " +
                                      incomingMessage.Body);

            return TwiML(messagingResponse);
        }
    }
}

对于要运行的代码,Twilio 建议我“虽然有很多方法可以做到这一点,例如将应用程序部署到 Azure 或 AWS,但您可能需要一种不那么费力的方法来测试您的 Twilio,例如 ngrok 以允许 Twilio 说话到您的 ASP.NET 应用程序”

我使用了 ngrok,它允许我将我的本地环境暴露给整个公共互联网,然后可以通过 ngrok 提供的 URL 访问,但是免费版本会在我重新启动我的 ec2 服务器时不断更改子域(从而重新启动 ngrok 隧道) .

我想知道的是我尝试了一个名为 serveo 的替代方法,它允许我免费选择一个子域,但是当我向 Twilio 发送消息时,URL 生成了一个错误(400)。

有办法吗?我是 asp.net mcv Web 应用程序和 Twilio 的新手,非常感谢一些指导。

我只需要此代码继续运行,以便它可以侦听 SMS 并做出响应。

如果没有,我如何在 AWS 上部署它?这将为我提供一个 URL 以提供给 Twilio 的控制台

标签: c#asp.net-mvctwiliongrok

解决方案


'serveo' 不起作用的原因是(我相信)您使用的是 IIS Express,它不允许使用主机标头而不是 localhost 的请求。

'ngrok' 有办法解决这个问题,我们的免费 VS 扩展程序也称为 Conveyor。传送带目前在测试版中具有隧道,但它是稳定的并且子域是固定的。您可以从 VS 或市场的扩展菜单中下载它。这是 Twilio 的教程https://conveyor.cloud/Help/Writing_webhooks_on_localhost_with_Visual_Studio_and_IIS_Express


推荐阅读