我有一个WCF客户端与WCF服务器通信(在同一台机器上)。我们将netTcpBinding与消息级安全性一起使用(使用自定义principalPermissionMode和serviceCredentials的自定义实现)。该服务标有InstanceContextMode.PerSession
。
WCF服务是在Windows服务(不在IIS中)中自托管的。
为了伪造keep-alive,我们有一个Ping
方法,客户端每15秒调用一次。我们在客户端程序的生命周期内保持客户端代理是开放的(因为在我们的情况下初始化会话是昂贵的)。
尽管如此,连接在9小时,1分钟和一点点之后被丢弃(在10次测试中,其中7次在9h1m6之后死亡)。
WCF日志中唯一的结果是“SocketConnection aborted”消息,后面是一组不同的异常,但通常包括“连接处于故障状态”异常。
WCF或TCP / IP中是否有一些超时导致这种情况?因为我很难过。
答案 0 :(得分:3)
经过大量繁琐的调查:大约9个小时后,WCF客户端重新对服务进行身份验证。我在认证步骤中正在做的事情就是杀死现有的会话。
答案 1 :(得分:2)
从上面的评论中你可以同时运行测试。
他们是否也在同一台服务器上,使用相同的应用程序池?
如果是这样,应用程序池的再循环可能导致所有测试同时停止。