简短版
我试图创建一个非常基本的webhook,它重定向到localhost上的ASP.NET MVC Controller方法。但是,我的网站使用完整的HTTPS,似乎我的隧道客户端(ngrok)失败了HTTPS。 创建一个新的ASP.NET MVC网站并实现我的webhook有效,但我一直在使用我的HTTPS网站失败。
长版
这是我到目前为止所做的:
1 /在我的ASP.NET MVC5网站上创建一个端点,并在 localhost 上运行它。它在端口44368上运行,因为我的完整网站使用HTTPS。
public class StripeWebhookController : BaseController
{
[HttpPost]
[AllowAnonymous]
public ActionResult Index()
{
// ...
}
}
2 /安装ngrok并按照this SO answer
中的说明对其进行配置 3 /转到我的Stripe测试仪表板并复制要调用的URL:
(我试图检查另一个RadioButton,"最新",但没有更好的工作。我也尝试用https
取代http
,而不是更好。
当我使用Stripe信息中心发送测试webhook时,我可以在http://localhost:4040/inspect/http
中看到请求:
但我放在StripeWebhook/Index
方法第一行的断点从未被击中。并且Stripe中的弹出窗口显示已发送的请求,并显示以下错误消息:Test webhook error: Timed out
。
但是,如果我使用默认模板创建一个全新的ASP.NET MVC网站,并按照完全相同的步骤,它就可以工作。这是因为我的项目使用HTTPS,并且ngrok无法通过HTTPS方法重定向(据我所知)。
如何使用ngrok(或任何其他免费隧道工具)通过HTTPS重定向到控制器方法?
答案 0 :(得分:1)
很难从可用信息中说出问题是与ngrok相关还是与您的代码相关或介于两者之间。
使用ngrok,您必须重写主机,请参阅ngrok with https on localhost returns 502
我们还有一个名为Conveyor的免费隧道工具,可以作为VS扩展安装。你可以从Tools - >安装它。通过UI扩展和注册帐户。它应该只是工作'一旦你有公共URL(将是https)。可能会出现同样的问题,但我很乐意帮助您解决问题。您可能会发现this video也很有帮助。
OPIT编辑:为了更清楚,我必须安装Conveyor,然后clic on"通过Internet访问"并在他们的网站上注册。然后,您获得了https://projectName.conveyor.cloud
之类的地址。我只需要使用此域名在Stripe上创建一个新端点并添加我的/StripeWebhook/Index
路由,它就像一个魅力