为啥我不能使用 serveo 而不是 ngrok 来隧道连接到托管在 EC2 服务器上的 mvc 应用程序以在 Twilio 上接收 SMS

Posted

技术标签:

【中文标题】为啥我不能使用 serveo 而不是 ngrok 来隧道连接到托管在 EC2 服务器上的 mvc 应用程序以在 Twilio 上接收 SMS【英文标题】:Why cant i use serveo instead of ngrok to tunnel connection to a mvc application hosted on EC2 server for receiving SMS on Twilio为什么我不能使用 serveo 而不是 ngrok 来隧道连接到托管在 EC2 服务器上的 mvc 应用程序以在 Twilio 上接收 SMS 【发布时间】:2019-10-11 03:52:40 【问题描述】:

我有一个简单的 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 的控制台

【问题讨论】:

您是否正在寻找一种方法来部署您的代码以便它可以继续运行,或者您是否仍在测试? @philnash 我正在寻找一种部署方式。 在这种情况下,我会寻找一些在 AWS 或 Azure 上部署 asp.net 应用程序的教程。使用 ngrok(或任何隧道解决方案)用于测试您的本地应用程序。 【参考方案1】:

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

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

【讨论】:

以上是关于为啥我不能使用 serveo 而不是 ngrok 来隧道连接到托管在 EC2 服务器上的 mvc 应用程序以在 Twilio 上接收 SMS的主要内容,如果未能解决你的问题,请参考以下文章

为啥我不能使用数组的枚举器,而不是自己实现呢?

为啥我不能使用常量而不是 this.item.number?

为啥我们不能使用 RuntimeException 而不是创建自定义异常? [复制]

为啥不能在 ngFor 中使用 var 而不是 let

我的 react-native 项目的永久解决方案而不是 ngrok

为啥 ngrok 向我发送 403 Forbidden