突然无法更改 HttpClient 上的超时

Posted

技术标签:

【中文标题】突然无法更改 HttpClient 上的超时【英文标题】:Suddenly can't change timeout on HttpClient 【发布时间】:2019-12-20 13:07:50 【问题描述】:

我有以下代码临时更改单例 HttpClient 的超时...

Task IncreaseTimeout(Func<Task> action)

    var initialTimeout = Client.HttpClient.Timeout;

    try
    
        Client.HttpClient.Timeout = new TimeSpan(0, 5, 0);

        return action();
    
    finally
    
        Client.HttpClient.Timeout = initialTimeout;
    

到目前为止,它在 iosandroid 上都可以正常工作,当更新 Timeout 属性时出现以下错误...

此实例已启动一个或多个请求。属性可以 仅在发送第一个请求之前进行修改。

为什么现在只在一个平台上开始发生这种情况?

【问题讨论】:

尝试在 Android 项目选项中更改 HttpClient 实现 好主意,但没有效果。 【参考方案1】:

看起来我所拥有的这种新的 Android 行为实际上是正确的。所以我将默认设置为一分钟而不是三十秒,我希望在上传文件时做到最好。

【讨论】:

【参考方案2】:

它是这样设计的,当您设置超时时,它会检查 httpclient 对象是否已释放或是否已使用该对象发出请求?

应该在通过客户端发出任何请求之前设置超时属性,否则它将抛出 InvalidOperationException 并引用相关消息。首次使用 HttpClient 后不要更改超时时间。

【讨论】:

以上是关于突然无法更改 HttpClient 上的超时的主要内容,如果未能解决你的问题,请参考以下文章

Apache HttpClient 4.0 无法在 Android 上的套接字超时

区分 HttpClient 请求失败类型

在 Microsoft.Owin.Testing.TestServer 的 HttpClient 上更改超时没有效果

Apache 突然无法打开任何东西。不超时继续加载

新手求助,Arduino联网后,如何回应HttpClient的GET请求

无法在 JavaScript 中为 Windows.Web.Http.HttpClient 添加超时