c# - 为什么我不能使用 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 的控制台
解决方案
'serveo' 不起作用的原因是(我相信)您使用的是 IIS Express,它不允许使用主机标头而不是 localhost 的请求。
'ngrok' 有办法解决这个问题,我们的免费 VS 扩展程序也称为 Conveyor。传送带目前在测试版中具有隧道,但它是稳定的并且子域是固定的。您可以从 VS 或市场的扩展菜单中下载它。这是 Twilio 的教程https://conveyor.cloud/Help/Writing_webhooks_on_localhost_with_Visual_Studio_and_IIS_Express
推荐阅读
- linux - 如何分离每个搜索块的匹配输出
- swift - 在 Swift 5 中将十进制转换为十六进制的困惑
- python - 在 python 中,使用 PIL 或 Pilllow,如何拍摄具有绿色背景的图像,剪切绿色并将其移动到新图像?
- angularjs - 使用 Angular 在 Ionic 的移动设备上自动完成不过滤
- functional-programming - 如何证明 Church 编码,forall r。(F r -> r) -> r,给出函子 F 的初始代数?
- pine-script - 我想将多空策略转换为多头策略
- r - 如何创建函数或循环重命名 24 个数据框的列?
- r - R- 每组随机采样行,直到达到最大行数
- java - 任务 ':app:mergeReleaseResources' 执行失败。> 发生多个任务操作失败:
- c# - StreamReader 无法读取第二行