gpt4 book ai didi

c# - 网络电话永远不会超时

转载 作者:太空狗 更新时间:2023-10-30 01:26:23 25 4
gpt4 key购买 nike

我有许多应用程序使用各种网络技术,例如 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() 函数来取消调用。但是,我想知道是否有更简单的方法来解决这个问题并确保超时。

有谁知道为什么会发生这种情况,如果是这样,确保调用始终超时的干净/简单/好方法是什么?

最佳答案

我可以猜到它发生的原因,但没有给出解决方案:(

怀疑它正在处理 DNS 解析。我见过各种“不算数”的情况——例如它最终发生在异步调用的启动线程上,或者它绝对不包含在超时中。

如果您能够通过拔出网络电缆重现此问题,我建议您使用 Wireshark 来证实我的猜测 - 这至少会建议进一步的调查途径。例如,.NET 堆栈中的某处可能存在 DNS 超时,这通常是无限的,但可以进行调整。

关于c# - 网络电话永远不会超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5101507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com