c# - HttpClient.Timeout 和使用 WebRequestHandler 超时属性有什么区别?

标签 c# .net vb.net timeout dotnet-httpclient

我可以直接使用 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/

相关文章:

c# - 将查询语法中的 LINQ 转换为 lambda 语法

c# - 对 EventWaitHandle 的名称感到困惑

.net - 如何查看 JIT 生成的代码

database - 绑定(bind)的组合框项是指不同的字段项

c# - 在 C# 中引用时,VB 程序集中的默认公共(public)只读属性未出现

c# - 在父窗体中居中 MessageBox

c# - 在 C# 中防止 SQL 注入(inject) asp.net

c# - 我可以将 DataContract 作为 DataMember 引用到它自己吗

c# - 使用 linq 对子列表中具有条件的元素进行计数

C# 和接口(interface) - 显式与隐式