【发布时间】:2010-11-19 10:02:35
【问题描述】:
我有一个 WCF 客户端与 WCF 服务器(在同一台机器上)通信。我们使用带有消息级安全性的 netTcpBinding(使用自定义 principalPermissionMode 和 serviceCredentials 的自定义实现)。该服务标有InstanceContextMode.PerSession。
WCF 服务自托管在 Windows 服务中(不在 IIS 中)。
为了伪造keep-alive,我们有一个Ping 方法,客户端每15 秒调用一次。我们在客户端程序的整个生命周期内保持客户端代理处于打开状态(因为在我们的例子中初始化会话是昂贵的)。
尽管如此,连接在 9 小时 1 分钟后断开(在 10 次测试运行中,其中 7 次在 9h1m6s 后死亡)。
WCF 日志中唯一的后果是“SocketConnection aborted”消息,随后是一组不同的异常,但通常包括“connection was in the faulted state”异常。
WCF 或 TCP/IP 中是否有一些超时导致了这种情况?因为我被难住了。
【问题讨论】:
-
10 次测试运行,每次运行超过 9 小时?我很佩服你的耐心。
-
老实说,这是 4 个客户端的 2 次测试运行,1 个客户端同时运行 2 次。所以只有 18 小时,而且还是一夜之间离开。
-
如果你再仔细想想,
9x3600+60+6<32768,是 15 的 2 次方 -
是的,但不完全是,即便如此,这是从哪里来的?
标签: wcf