【问题标题】:Adjust HttpRequst Timeout Before Creating any HttpWebRequest在创建任何 HttpWebRequest 之前调整 HttpRequst 超时
【发布时间】:2016-01-11 20:34:57
【问题描述】:

在 C# 5 和 winform 中,我使用了 Telegram 公司创建的库。在这个库中有一个函数SendDocument(UserId,DocumentStream)。我知道在这个函数中,他们使用了一些HttpWebRequest,而其中的Timeout 属性没有被处理。因为有时它无法发送大型文档,并且在 100 秒后(DotNet 中的默认超时),该函数会抛出异常 The task was canceled

从 Telegram 公司的文档中,我们可以发送 50 MB 的文件,我的示例文件大约是 15 MB。

好的,现在我想调整我的服务器的所有HttpWebRequest 的超时时间,但我没有任何功能。

我可以调整我服务器中的所有HttpWebRequest.Timeout 属性吗??

【问题讨论】:

    标签: c# timeout httpwebrequest telegram telegram-bot


    【解决方案1】:

    这与您的问题没有直接关系,但可能有助于您放松心情。

    我的建议是,不要费心调整超时时间。这不太可能有帮助。这是我所经历的:

    我尝试使用 Telegram Bot API 上传 20M 的 mp4 视频文件。在 Raspberry Pi 中,它需要 5 分钟,然后返回 504 Gateway-Timeout 错误。从托管服务器,它需要 1 分钟,然后返回 504 Gateway-Timeout 错误。然而,在这两种情况下,视频最终都在 5 分钟后到达了收件人手中。所以,上传看起来有些成功,但还不太成功。

    我尝试通过流式上传来解决问题。同样的问题仍然存在。

    我尝试调整 HTTP 超时参数。同样的问题仍然存在。

    我尝试使用 cURL 来发出请求(而不是使用 telepot,我编写的 Python 库)。同样的问题仍然存在。

    我怀疑问题出在 Telegram 服务器上,因此我与 Bot Support 进行了交谈。他们有一次回复我,说他们已经做了一些改进,并问我是否还有同样的问题。但同样的问题仍然存在。

    所以,问题似乎出在 Telegram 服务器上。这不是你的代码。

    【讨论】:

    • 这意味着他们是故意的?弱 API。
    【解决方案2】:

    我知道这是一个很老的问题,但我的回答可能会对某人有所帮助。当我尝试通过我的机器人发送相当大的文件时,我收到了Telegram.Bot.Exceptions.ApiRequestException: Request timed out,我找到的唯一解决方案是this 问题。这并不是很有帮助,因为如果您检查源代码,那么您会看到传递取消令牌对请求超时没有任何作用。但后来我看到您可以将 HttpClient 传递给您的机器人客户端实例并使其如下所示:

            _httpClient = new HttpClient();
            _httpClient.Timeout = new TimeSpan(0, 5, 0); // 5 min
            _client = new TelegramBotClient(botConfig.Token, _httpClient);
    

    希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      相关资源
      最近更新 更多