【问题标题】:Recognizing the collapse of WCF connection识别 WCF 连接的崩溃
【发布时间】:2014-08-12 14:32:03
【问题描述】:

我有 WCF 客户端执行一些功能。

此功能在 WCF 服务器上需要几分钟,但例如服务器意外终止。

如何在连接超时之前检测到这个问题?

我必须以分钟为单位,我想立即找出这个问题,就像在经典的 TCP 通信中一样。

例如,我可以在调试中看到我的客户立即处理了一些异常,例如

“System.Net.Sockets.SocketException”类型的第一次机会异常

System.ServiceModel.dll 中发生了“System.ServiceModel.CommunicationException”类型的第一次机会异常

..so 内部客户端立即意识到这一点,但我的函数被冻结,直到超时到期。

我尝试了错误事件,但没有引发。

感谢您的任何建议

【问题讨论】:

    标签: c# wcf


    【解决方案1】:

    问题是你没有。 WCF“知道”在该超时期限后连接丢失。

    您可以尝试将超时设置得较低(特别是 OpenTimeoutSendTimeout),但这可能会影响您软件的其他部分。

    来自documentation

    SendTimeout - 用于初始化 OperationTimeout,它控制发送消息的整个过程,包括接收请求/回复服务操作的回复消息。当从回调合约方法发送回复消息时,此超时也适用。

    【讨论】:

    • 由于应用程序功能,我无法更改 SendTimeout,但 InactivityTimeout 似乎有帮助。它可能很低
    • 好的。 WCF 有很多功能可以使这项工作完全按照您想要的方式工作,因此只需尝试设置不同的指标并查看它是否提供了预期的行为。需要更多帮助?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多