Ngrok在隧道连接本地主机时返回405错误。

6

我有一个Web应用程序机器人,希望让一些人进行测试。我使用 Bot Framework Emulator 在本地测试它,并且效果很好,但我无法通过 ngrok 进行主机托管。

(我实际上使用 Azure 中我的应用程序链接的 ...azurewebsites.net/api/messages 成功实现了另一个机器人的设置,但是这个机器人却失败了,所以我尝试使用 ngrok 提供的链接 - 两个机器人都托管在 Azure 中,但我不知道如何使其可供远程访问)

我执行的步骤:

  1. 在 Visual Studio 中部署应用程序,使其运行在 localhost:3979;

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

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

  4. 在 Bot Framework Emulator 中插入上述 URL;

  5. 点击连接。

但无论是在 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个回答

4
在ngrok和Bot Framework模拟器中,都返回405方法不允许。如果我只提供https://xxxxxxxx.ngrok.io作为消息终点,我可以在我的端上复现此问题。

enter image description here

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

enter image description here


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

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