c# - 为什么 HttpWebRequest ReadWriteTimeout 设置为 5 分钟?

标签 c# httpwebrequest timeout

HttpWebRequests 的 ReadWriteTimeout 似乎默认为 5 分钟。

有这么高的原因吗?我试图将 API 调用的超时设置为 10 秒,但它旋转了超过 2 分钟。

当我将此设置为 30 秒时,它会在合理的时间内超时。

设置太低是否危险?

我无法想象在我的应用程序中花费超过 20-30 秒的时间(小的 2-30kb 有效负载)。

引用:http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.readwritetimeout.aspx

最佳答案

当然有 5 分钟超时的原因。它看起来像这样:

enter image description here

这个装置是一个机器人磁带检索系统,由国际射电天文学研究中心使用。它存储了 32.5 PB 的历史数据。当它的服务器收到 HttpWebRequest 时,机器会发送机器人去检索带有数据的磁带。正如您想象的那样,这需要一段时间。

这些系统在十年前相当普遍,大约在 .NET 设计的时候。今天情况并非如此,硬盘存储容量的不断改进使它们几近过时。尽管超过 5 PB 的 SAN 存储仍然会让您损失相当大的一笔钱。如果速度不是必需的,那么磁带是无可匹敌的。

很明显,当 .NET 对线路另一端发生的事情一无所知时,它不可能可靠地声明超时。所以默认是高的。如果您有充分的理由相信您的特定设置存在上限,那么请毫不犹豫地降低它。请将其设置为可编辑设置,您无法预测 future 。

关于c# - 为什么 HttpWebRequest ReadWriteTimeout 设置为 5 分钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14530476/

相关文章:

iphone - Monotouch - iphone HttpWebRequest 关闭缓存?

python - 递归 Python 超时

c# - 在 C# 中调整 HttpWebRequest 连接超时

java - 有没有办法中断有状态 session bean?

c# - 如何读取子项目中appsettings文件的内容

c# - 如果它是空的 ('' ) 字符串,则忽略属性来自 Json/Api Response C#

c# - 从字符串中去除前导 n 个字母字符

c# - 从 html 源解析一个短字符串

c# - HttpWebRequest keep alive - .net 如何重用连接?

c# ClientCertificates.Add() 证书未附加到 httpwebrequest