Ngrok未将我的POST请求传递到本地主机

13
我正在尝试为Stripe设置Webhook,并根据Stripe文档创建了一个控制器,在运行在虚拟机中的ASP.Net MVC中执行(也许这会改变一些事情?)。我一直在测试控制器中的操作,以查看是否可以接收帖子,因此我正在使用Postman发送我的本地主机帖子请求,这是有效的。但现在我需要使用Ngrok为我的本地主机提供一个URL,以便Stripe可以使用它。我正在运行ngrok并传递这些参数来运行。
ngrok http -host-header="localhost:44368" 44368

这是我看到的,一切看起来都很正常

enter image description here

但是现在当我尝试在Postman中使用它时

例如https://11d1ba97.ngrok.io/StripeWebHook/Index

我收到一个502 Bad Gateway消息,操作方法从未被触发。

当我尝试从Stripe发送测试webhook时,我遇到了同样的问题。 FYI-使用'localhost:4040'从Ngrok请求的时间显示所有响应时间为0ms。

enter image description here

更新 - 我收到了ngrok的电子邮件 “问题在于HTTPS。 ngrok终止HTTPS流量,然后将未加密的http流量转发到您的本地应用程序。 您想要执行以下两个操作之一:

1)使您的应用程序公开HTTP端口并将流量转发到该端口 2)使用ngrok的TLS隧道(将TLS流量移交给您进行终止)。 对于此选项,您需要处理证书管理、证书不匹配等所有复杂性,仅供参考。 如果可能,我建议选择#1”

问题 - 有人知道如何在使用Https的ASP.Net MVC应用程序中打开http端口吗?


您找到了解决方案吗? - Morten Holmgaard
嗨,莫顿。不好意思,我放弃了。这可能与我在Macbook上通过虚拟机运行有关。下周我回到应用程序的那部分时会重新审视它并告诉你。如果你找到了解决方案,请回复。 - user1186050
1
我发现我的问题并不完全与你的相同。我使用 ngrok.exe http -region eu -host-header=rewrite mydomain:80 让我的工作正常,我认为这与你的 https 问题无关。 - Morten Holmgaard
2个回答

28

我的问题是我的应用程序中的断点无法命中。

我正在使用

ngrok http 58533

但将其更改为以下内容后,我的断点就能够被命中。

ngrok http -host-header=rewrite localhost:58533

3
"ngrok http -host-header=rewrite http://localhost:58533" 对我有用。谢谢。 - Topman
58533是使用TLS的端口吗? - zolty13

12

有点晚了 :) 可以通过在“属性”中取消选中“启用SSL”标志来使http工作。

步骤1:右键单击Web Api项目,选择“属性” 输入图像描述

步骤2:下载并安装扩展

https://marketplace.visualstudio.com/items?itemName=DavidProthero.NgrokExtensions

步骤3:从Visual Studio启动ngrok隧道

输入图像描述

(图片来源于https://raw.githubusercontent.com/dprothero/NgrokExtensions/master/docs/img/menu-item.png)

步骤4:复制转发的http网址

输入图像描述

步骤5:将其粘贴到Postman中,并添加控制器/操作

输入图像描述

你就得到了200!(赞? :))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接