【发布时间】:2011-03-03 17:39:11
【问题描述】:
我有许多应用程序使用各种 Web 技术,例如 SOAP、WCF 服务或只是简单的 XmlReader。但是,如果互联网连接在错误的时间出现问题,它们似乎都会遇到相同的问题,即错过超时和无限挂起。
我已将所有场景中的超时设置为较小的值,例如对于 wcf
closeTimeout="00:00:15" openTimeout="00:00:15"
receiveTimeout="00:00:15" sendTimeout="00:00:15"
或肥皂
_Session.Timeout = (int)TIMEOUT.TotalMilliseconds;
这些超时通常会受到影响,但似乎有一些特殊情况,如果互联网在正确的时间掉线,调用将挂起并且永远不会超时(使用同步调用)。
我正在考虑每次拨打电话时启动一个计时器,并在计时器到期时使用适当的.Abort() 函数来取消呼叫。但是,我想知道是否有更简单的方法来解决问题并确保超时。
有谁知道为什么会发生这种情况,如果知道的话,有什么干净/简单/好方法可以确保调用始终超时?
【问题讨论】:
-
新线索 - 我认为这可能与使用 Web 引用(看起来仅来自 .net 2)而不是服务引用有关。可能切换到服务引用会带来更可靠的代码?无论如何我都在尝试这个,看看它是否至少可以修复那些网络调用。
标签: c# web-services timeout