Ngrok 在隧道我的本地主机时返回 405 错误

Posted

技术标签:

【中文标题】Ngrok 在隧道我的本地主机时返回 405 错误【英文标题】:Ngrok returns 405 error while tunneling my localhost 【发布时间】:2018-07-07 10:35:46 【问题描述】:

我有一个网络应用程序机器人,我想远程控制它,以便少数人可以对其进行测试。我正在使用 Bot Framework Emulator 在本地对其进行测试,效果非常好,但我完全无法让 ngrok 托管它。

(我实际上使用...azurewebsites.net/api/messages 链接我的应用在 Azure 中与另一个机器人进行了连接,但我不能使用这个,所以我正在尝试使用 ngrok 提供的链接我 - 我管理的机器人和这个机器人都托管在 Azure 中,但我不知道如何使其可用于远程访问)

我正在采取的步骤:

    在 Visual Studio 中部署应用,使其在 localhost:3979 上运行;

    在 ngrok 中使用ngrok 3979 http -host-header=rewrite localhost:3979 从外部打开端口;

    获取 ngrok 为我提供的转发 URL 之一,例如 https://3d609207.ngrok.io

    在 Bot Framework Emulator 中插入上一个 URL;

    点击连接。

在 ngrok 和 Bot Framework Emulator 中都返回我 405 Method Not Allowed

我尝试访问我在 Bot Framework Emulator 中插入的链接,我通常会看到在本地托管我的机器人时会看到的页面:

在此处描述您的机器人以及您的使用条款等。

访问 Bot Framework 以注册您的机器人。注册的时候, 记得将你的机器人的端点设置为

https://your_bots_hostname/api/messages

但我无法在 Bot Framework Emulator 中发送或接收消息。

此外,ngrok 在 HTTP 请求标题下打印:

HTTP Requests
-------------

POST /                         405 Method Not Allowed
GET  /favicon.ico              200 OK
GET  /                         200 OK

我的 MSAppID 和密码在 web.config 中配置正确,编译没有错误,所以我怀疑它是代码上的东西(除非代码中有一些配置阻止这个机器人被远程访问是有原因的,但我不知道)。

非常感谢您在此问题上提供的任何帮助。感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

在 ngrok 和 Bot Framework Emulator 中都返回 405 Method Not Allowed

如果我只提供https://xxxxxxxx.ngrok.io 作为消息端点,我可以重现我这边的问题。

请尝试将https://xxxxxxxx.ngrok.io/api/messages 指定为消息端点,这对我有用。

【讨论】:

成功了!!抱歉这么久才回复,我不得不专注于另一个项目。对于注册,我在 ngrok 上使用了ngrok http [port] -host-header="localhost:[port]",并将语言环境设置为我的 Visual Studio 正在部署的相同端口。非常感谢。

以上是关于Ngrok 在隧道我的本地主机时返回 405 错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥在通过 ngrok 进行隧道传输时会出现 CORS 错误?

ngrok 状态错误 - 看起来 ngrok 隧道不再存在

隧道通过 ngrok 剥离风格和主题的 wordpress 网站

使用 ngrok for kik 时仅返回 404

Ngrok 为现有 Vhost 设置 SSL 本地隧道

在本地主机上使用 https 的 ngrok 返回 502