【发布时间】:2020-06-10 09:20:42
【问题描述】:
然后立即抛出一个 WebException 超时。
HttpWebRequest.Timeout 设置为 5000(= 5 秒)。 但是我什至不到 1 秒就得到了异常,那里出了什么问题?
而且默认值应该是 100 秒,默认情况下仍然会立即抛出异常。
来自 WebException 的确切消息: 操作已超时
这条消息是否还有其他含义?
以下行抛出此异常:
HttpWebResponse response = newRequest.GetResponse() as HttpWebResponse;
更奇怪的是:它只在至少 2 台计算机上运行了大约半年。
我未能以可读的方式输入更大的代码(丢失了编辑器的参数)。但是因为它只是在我不知道什么是相关的之前才起作用。这个东西实际上几个月都没有动过,只是起作用了。
【问题讨论】:
-
你能分享一下产生异常的代码吗?
-
服务器超时?
-
服务器超时是什么意思?问题似乎是程序实际上并没有等待,只是抛出了超时。据我了解,如果超时限制设置为 5 秒,您实际上需要等待 5 秒才能获得超时。但是程序的作用是:“到达线路后立即抛出异常”它当然没有等待 5 秒,更不用说 100 秒了。
-
客户端和服务器有两次超时。在您的情况下,您正在设置客户端超时。如果您的响应时间长于 5 秒,那么您将超时。可能存在服务器超时。您有一个超时值为 5 秒的客户端,但服务器在不到 5 秒内返回超时。所以我建议ping服务器,然后跟踪服务器主机路由以检查是否有服务器端超时。
-
好的,我该如何检查?该地址通常可通过浏览器访问。 Alos ping 没有显示任何异常。 Traceroute 也不显示任何超过 100 毫秒的值。我仍然不明白它如何立即响应超时。但也只有 C# 并且它以前也有效。服务器端错误不会返回http响应吗?或者你认为防火墙以一种奇怪的方式拒绝这个特定的请求? (最近才开始这样做。)不要误会我的意思。有问题的提供者实际上确实在有问题的时间跨度内改变了一些东西。看起来还是很奇怪。
标签: c# timeout httpwebrequest