【发布时间】:2010-05-21 08:29:49
【问题描述】:
我正在为我的 WCF 服务使用会话模式。问题如下:如果会话被破坏并且不再存在,客户端在调用合约之前无法知道它。
例如,如果服务已重新启动,则客户端的会话 id 无效,因为该会话已在服务器端关闭。
我在调用合约之前检查通道状态,它的值是 CommunicationState.Opened,即使会话已经中断。因此,当我在此检查后调用合同时,我会收到带有以下消息的 CommunicationException:
远程端点不再识别此序列。这很可能是由于远程端点上的中止。 wsrm:Identifier 的值不是已知的序列标识符。可靠会话出现故障。
有什么解决方法吗?我需要一种在调用合约之前获取适当会话状态的方法,这样我就可以在不出现异常的情况下恢复它。
附: CommunicationException 类型是通用的,因此我无法通过捕获此异常来检测会话崩溃。
附言我已经问过类似的问题here,但当时我不知道原因,现在我不知道如何逃避它。
【问题讨论】:
标签: wcf session-state