【问题标题】:SessionMode.NotAllowed versus maxConcurrentSessions for wshttpbindingwshttpbinding 的 SessionMode.NotAllowed 与 maxConcurrentSessions
【发布时间】:2011-10-09 23:51:41
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: wcf session wshttpbinding


    【解决方案1】:

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

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

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

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

    不久前我写了一封 blog article 关于这件事

    响应编辑更新

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

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

    【讨论】:

    • 查看我编辑的问题。我想要实现的是“没有会话,没有状态”,而且:第一次调用只进行一次身份验证,然后保持这个安全连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多