通过 HTTPS 测试 Stripe webhook 不断失败:超时

Testing Stripe webhook over HTTPS keep failing : Timed out

短版

我正在尝试创建一个非常基本的 webhook,它重定向到本地主机上的 ASP.NET MVC 控制器方法。但是,我的网站使用完整的 HTTPS,而且我的隧道客户端 (ngrok) 似乎无法使用 HTTPS。 创建一个新的 ASP.NET MVC 网站并实现我的 webhook 是可行的,但我的 HTTPS 网站总是失败。

长版

这是我到目前为止所做的:

1/ 在我的 ASP.NET MVC5 网站上创建一个端点,并在 localhost 上 运行 它。它 运行s 在端口 44368 上,因为我的完整网站使用 HTTPS。

public class StripeWebhookController : BaseController
{
    [HttpPost]
    [AllowAnonymous]
    public ActionResult Index()
    {
         // ...
    }
}

2/安装ngrok and configure it as explained in this SO answer

3/ 转到我的 Stripe 测试仪表板并复制 URL 以这样调用:
(我尝试检查另一个 RadioButton,"latest",但效果并不好。我还尝试用 http 替换 https,也不是更好)

当我使用 Stripe 仪表板发送测试 webhook 时,我可以在 http://localhost:4040/inspect/http 中看到请求:

但是我放置在 StripeWebhook/Index 方法第一行的断点从未命中。 Stripe 中会出现一个弹出窗口,其中包含已发送的请求以及此错误消息:Test webhook error: Timed out.

但是,如果我使用默认模板创建一个全新的 ASP.NET MVC 网站,并遵循完全相同的步骤,它就可以工作。这是因为我的项目使用 HTTPS,而 ngrok 无法通过 HTTPS 方法重定向(据我所知。)

如何使用 ngrok(或任何其他免费隧道工具)通过 HTTPS 重定向到控制器方法?

根据现有信息很难判断问题是与 ngrok 相关还是与您的代码相关或介于两者之间。

对于 ngrok,您必须重写主机,请参阅

我们还有一个名为 Conveyor 的免费隧道工具,它作为 VS 扩展安装。您可以从工具 -> 扩展中安装它,然后通过 UI 注册一个帐户。它应该 'just work' 一旦你有 public URL (这将是 https)。有可能会出现同样的问题,但我很乐意帮助您解决这个问题。您可能会发现 this video 也很有帮助。

由 OP 编辑:为了更清楚,我必须安装 Conveyor,然后点击 "Access over Internet" 并在他们的网站上注册。然后,您会得到一个地址,如 https://projectName.conveyor.cloud。我只需要使用这个域名在 Stripe 上创建一个新端点并添加我的 /StripeWebhook/Index 路由,它就像一个魅力