SessionMode.NotAllowed与wshttpbinding的maxConcurrentSessions

时间:2011-07-21 07:15:16

标签: wcf session wshttpbinding

serviceThrottling的服务属性SessionMode.NotAllowed和maxConcurrentSessions可以与wshttpbinding同时使用。

这是否意味着他们可能会引用两个不同的会话概念?

E.g。 SessionMode.NotAllowed =无状态服务。
maxConcurrentSessions = max。并发(不同?)安全谈判。

编辑:
this answer to another question我已经理解“WCF将检查app.config [maxConcurrentSessions]是否与属性[SessionMode.NotAllowed]一致,并且如果它们不一致则拒绝启动服务”。
当声明SessionMode.NotAllowed并禁止使用会话时,由于与maxConcurrentSessions的配置相矛盾,WCF是否应该拒绝启动服务?

1 个答案:

答案 0 :(得分:1)

SessionMode.NoAllowed说合同必须以无国籍的方式实施

对于NetTcp,这会阻止服务启动,因为它本身就是会话,对于WSHttpBinding,它会抑制会话

如果你使用SessionMode.NotAllowed,那么

maxConcurrentSessions将没有效果,因为没有会话节流

WSHttpBinding使用SecureConversation来支持其会话概念(如果可用)。如果它不可用,它将使用可靠的消息传递,如果它可用。如果两者都不可用,则无法支持会话

我前段时间写了一篇关于这个东西的blog article

响应修改时更新

安全对话和会话不是一回事。无论您是否有会话,都可以使用安全对话。 WSHttpBinding支持会话的一种方式是使用安全会话的协商来定义会话。但是,如果你说SessionMode.NotAllowed那么WCF根本就没有sessionID而不支持会话 - 这并不意味着它不会使用安全对话

maxConcurrentSessions限制最大并发会话数。如果关闭会话,则会话数将为0,因此将始终小于最大值