我有许多应用程序使用各种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()
函数取消调用。然而,我想知道是否有更简单的方法来修复问题并确保超时被触发。
有人知道为什么会出现这种情况,并且如果知道的话,有什么简洁/简单/好的方法可以确保调用总是超时?