如何终止WCF会话

本文关键字:WCF 会话 终止 何终止 | 更新日期: 2023-09-27 18:07:28

WCF会话由属性

发起
[OperationContract(IsInitiating = true, IsTerminating = false)]

并以

结束
[OperationContract(IsInitiating = false, IsTerminating = true)]

是否有一种基于某些条件终止当前WCF会话的方法?让我们验证凭据,否则不让会话启动。是否有一种方法可以做到这一点,而不会在启动会话的操作契约中抛出异常?

这是为了确保客户端在会话终止后不会进行额外的调用。可能是WCF中的限制,因为会话是客户端发起的。

如何终止WCF会话

是否有一种方法来终止当前的WCF会话基于一些条件?让我们验证凭据,否则不允许会话开始。是否有一种方法可以做到这一点而不抛出异常启动会话的操作契约。

基于你的代码isinitialization和istterminate,一旦方法被

调用,它会自动抛出一个异常给客户端

isstarting = false, isterating = true

而不使用

调用方法

isstarting = true, isterating = false

并且我不认为你可以在不抛出异常的情况下处理它,因为WCF在底层处理它。或者可能是他们的"我不知道"

你可以考虑一下我在下面写的一些信息

您没有提到您在服务中使用的消息传递类型。

  • 如果你正在使用双工消息传递,你可以关闭/中止连接而不会向客户端抛出任何异常。

你实现了什么样的验证凭证机制?

  • 如果您的凭据验证使用自定义UserNamePassword验证器,我不认为他们是一种不抛出异常而终止它的方法。
  • 如果你使用证书和凭据,我认为你不需要终止会话,因为一旦身份验证不成功,它就会终止。

这是为了确保客户端不进行额外的调用一旦会话终止。可能是WCF的限制会话是客户端发起的。

  • 如果你实现了正确的凭证验证,你就不需要担心"确保客户端不做额外的类…"因为根本没有启动会话。

关于在WCF中关闭连接的不同方法的附加信息