如何终止wcf会话

时间:2015-08-11 21:40:46

标签: c# .net wcf session

WCF会话由属性

启动
[OperationContract(IsInitiating = true, IsTerminating = false)]

并以

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

有没有办法根据某些条件终止当前的WCF会话?让我们说验证凭据否则不会让会话开始。有没有办法在不启动会话的操作合同中抛出异常的情况下执行此操作。

这是为了确保客户端在会话终止后不会进行其他调用。可能是WCF中的限制,因为会话是客户端启动的。

1 个答案:

答案 0 :(得分:1)

  

有没有办法根据某些内容终止当前的WCF会话   条件?让我们说验证凭据否则不要让会话   开始。有没有办法做到这一点,而不会抛出异常   启动会议的运营合同。

基于您的代码IsInitiating和Isterminating它会在使用

调用方法后自动向客户端抛出异常
  

IsInitiating = false,IsTerminating = true

不用

调用方法
  

IsInitiating = true,IsTerminating = false

我不认为你可以在不抛出异常的情况下处理它,因为WCF在引擎盖下工作。或者可能是他们的“我不知道”

您可能会考虑我在下面写的一些信息。

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

  • 如果您使用的是双工消息,则可以关闭/中止连接,而不会向客户端抛出任何异常。

您实施了哪种验证凭证机制?

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

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

  • 如果您对凭据进行了正确的验证,则无需担心“ 确保客户端不会产生额外的问题...... ”,因为没有会话发起了。

有关在WCF中close连接的不同方法的其他信息。