gpt4 book ai didi

wcf - 如何在调用合约方法之前检测 WCF session 崩溃?

转载 作者:行者123 更新时间:2023-12-04 06:52:46 28 4
gpt4 key购买 nike

我正在为我的 WCF 服务使用 session 模式。问题如下:如果 session 被破坏并且不再存在,客户端在调用合约之前无法知道它。

例如,如果服务已重新启动,则客户端的 session id 无效,因为该 session 已在服务器端关闭。

我在调用合约之前检查 channel 状态,它的值是 CommunicationState.Opened,即使 session 已经中断。因此,当我在此检查后调用契约(Contract)时,会收到带有以下消息的 CommunicationException:

The remote endpoint no longer recognizes this sequence. This is most likely due to an abort on the remote endpoint. The value of wsrm:Identifier is not a known Sequence identifier. The reliable session was faulted.



有什么解决方法吗?我需要一种在调用合约之前获取适当 session 状态的方法,这样我就可以在没有异常的情况下恢复它。

附言CommunicationException 类型是通用的,因此我无法通过捕获此异常来检测 session 崩溃。

附言我也问过类似的问题 here ,但在那种情况下我不知道原因,现在我不知道如何逃避它。

最佳答案

不,没有变通方法——你能(并且应该做的)就是使用适当的防御性编程原则来捕捉和处理发生的这些异常。

如果服务器崩溃或网络出现故障,不幸的是,没有机制可以通知所有潜在客户这种情况 - 他们下次尝试调用时就会发现。

更新:是的,CommunicationException只是与 WCF 相关的所有异常的通用基类 - 查看 MSDN docs更具体地了解所有可以捕获的后代异常 - EndpointNotFoundException , FaultException (或 FaultException<T> ),ProtocolException还有更多!

关于wcf - 如何在调用合约方法之前检测 WCF session 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2880550/

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