突然无法更改HttpClient上的超时

时间:2019-12-20 13:07:50

标签: c# xamarin xamarin.forms timeout dotnet-httpclient

我有以下代码临时更改单例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;
    }
}

到目前为止,它在iOS和Android上都可以正常运行,当Timeout属性更新时,它给出以下错误...

  

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

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

2 个答案:

答案 0 :(得分:0)

看起来我的这种新Android行为实际上是正确的。因此,我将默认值设置为一分钟而不是三十秒,我希望上传文件时能达到最佳效果。

答案 1 :(得分:0)

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

Timeout属性应该在通过客户端发出的任何请求之前设置,否则它将引发InvalidOperationException以及所引用的消息。第一次使用HttpClient之后,请勿更改超时。