0

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

这是否意味着它们可能指的是两个不同的会话概念?

例如 SessionMode.NotAllowed = 无状态服务。
最大并发会话数 = 最大值。并发(不同?)安全协商。

编辑:
this answer to another question我了解到“WCF将检查app.config [maxConcurrentSessions]是否与属性[SessionMode.NotAllowed]一致,如果不一致则拒绝启动服务”。
当 SessionMode.NotAllowed 被声明并且这禁用会话的使用时,WCF 不应该因为与 maxConcurrentSessions 的配置相矛盾而拒绝启动服务吗?

4

1 回答 1

1

SessionMode.NoAllowed 表示合约必须以无状态的方式实现

对于 NetTcp 这将阻止服务以其固有的会话方式启动,对于 WSHttpBinding 它将抑制会话

如果您使用 SessionMode.NotAllowed,maxConcurrentSessions 将无效,因为没有会话可以限制

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

不久前我写了一篇关于这个东西的博客文章

更新以响应编辑

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

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

于 2011-07-21T07:48:31.433 回答