无法使用 ngrok 在本地测试我的 Telegram Bot

Posted

技术标签:

【中文标题】无法使用 ngrok 在本地测试我的 Telegram Bot【英文标题】:Couldn't test locally my Telegram Bot with ngrok 【发布时间】:2019-01-20 15:30:29 【问题描述】:

我正在尝试使用 ngrok 和 nuget 包 Telegram.Bot.Core 测试我的 Telegram Bot... 这些是我目前正在执行的步骤: 1) 我用 Lampp 启动一个 Web 服务器(因为我使用的是 Arch Linux) 2) 然后我使用以下命令启动 ngrok:ngrok http 8443 3)最后一步......我运行我的代码示例:

myBot.SetWebhookAsync("https://address.ngrok.io").Wait();

myBot.StartReceiving(Array.Empty<UpdateType>());
Console.WriteLine("Starting Receiving");
Console.ReadLine();
myBot.StopReceiving();

问题是 localhost:8443 无法访问,我不知道为什么。 我尝试在 launch.json 的配置属性中添加 "debugServer": 8443 但 localhost:8443 仍然无法访问.. 我做错了什么?

【问题讨论】:

【参考方案1】:

要使用 ngrok 共享您的本地主机和测试 Telegram Bot,您应该执行以下步骤:

- 第 1 步

编辑位于 ../.vs/config/applicationhost.config 中的 Visual Studio 应用程序配置文件(从您的项目根文件夹中跟踪它)。

找到绑定标签并添加第二个绑定标签(“localhost”刚刚删除):

<configuration>
...
    <sites>
    ...
        <site ...>
            <bindings>
                <binding protocol="http" bindingInformation="*:5000:localhost" />
                <binding protocol="http" bindingInformation="*:5000:" />
            </bindings>
        </site>
    ...
    </sites>
...
</configuration>

注意不要对使用 8080 端口的标签做这一步绑定。

- 第 2 步

以管理员身份运行 Visual Studio 并打开您的项目。

- 第 3 步

关闭防火墙。

- 第 4 步

运行ngrok并输入“ngrok http 8443”命令然后回车。

- 第 5 步

打开您喜欢的浏览器之一,然后转到api.telegram.org/bot&lt;Token&gt;/setwebhook?url=&lt;Domain&gt; 地址。

在此 URL 中是您的机器人令牌,并且是您使用 https 的 ngrok 转发地址。

(例如:https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/setwebhook?url=https://01e08160.ngrok.io/api/Update

【讨论】:

以上是关于无法使用 ngrok 在本地测试我的 Telegram Bot的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 ngrok 或 localtunnel 来测试本地 gRPC 服务器?

ngrok 无法正常工作以测试 HTTPS

ngrok 无法正常工作以测试 HTTPS

NGROK 不适用于 WAN 或外部本地网络

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

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