我可以直接使用 HttpClient.Timeout
设置我的 HttpClient
对象的超时,但我最近阅读了有关 WebRequestHandler
类的内容HttpClientHandler
的派生词。
WebRequestHandler
有一个 ReadWriteTimeout
属性。当与 HttpClient.Timeout
一起使用时,这将如何影响请求的操作?
最佳答案
当您执行 SendAsync
时,HttpClient.Timeout
被放置在 CancellationTokenSource
上。这意味着此超时适用于整个异步操作。
另一方面,WebRequestHandler.ReadWriteTimeout
被复制到 HttpWebRequest
并在请求流中设置 ReadTimeout
和 >写超时
。所以这更多的是流级别的超时,归根结底是套接字级别的超时。
如果同时设置两者,则如果操作总时间超过 HttpClient.Timeout
,它将超时,并且如果从流中读取或写入时间超过 WebRequestHandler.ReadWriteTimeout
它也会超时。虽然我不确定引发的超时异常是否有所不同。
关于c# - HttpClient.Timeout 和使用 WebRequestHandler 超时属性有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26313172/