【问题标题】:Share ASP.NET session state between two WCF different services在两个 WCF 不同服务之间共享 ASP.NET 会话状态
【发布时间】:2010-03-16 11:58:08
【问题描述】:

我有两个配置为 ASP.NET 兼容模式的 WCF 服务,以允许它们使用 ASP.NET 会话状态。问题如下:

1.- 对第一个服务的调用会在 ASP.NET 会话状态中存储一个值。 2.- 对第一个服务的第二次调用可以读取该值。

但是……

3.- 对第二个服务的调用无法读取 ASP.NET 会话状态值。

似乎 ASP.NET 会话状态未在两个 WCF 服务之间共享。

有没有办法在两个 WCF 服务之间共享 ASP.NET 会话状态?

【问题讨论】:

    标签: asp.net wcf session-state


    【解决方案1】:

    如果 2 个服务共享数据库,您可以在那里实现会话存储。您将能够在不同的服务或应用程序之间共享信息。

    【讨论】:

    • 非常感谢。我怎样才能做到这一点?问题是每对调用者的会话状态都不同。例如,存在两台消费者机器,它们运行一个调用这两个服务的程序。每个消费者机器的会话状态必须不同。
    • 基本思想是将您需要在服务之间共享的任何信息存储在数据库中。假设数据库是所有人共有的存储资源。您应该创建一个表 SharedSession 或类似的东西,并将其用于需要共享的写入/读取会话状态。
    【解决方案2】:

    这两个调用会产生两个不同的会话,所以答案有点不。您可能需要找到一些自定义方法来处理此问题。

    一般来说,服务调用应该是原子的,不应该以这种方式依赖会话 - 如果你可以做到让会话根本不被使用,那么这是最好的解决方案。

    【讨论】:

    • 感谢您的回复。场景是:我们有不同的服务:CRM、财务、制造……(都使用同一个数据库)。要使用这些服务,客户端必须在系统中登录以验证凭据并提取语言、运行时参数、授权规则等信息;该信息存储在会话状态中(登录过程可能很慢)。这个想法是提供另一个服务来公开一个登录操作,这样其他服务就不会每次都被强制登录。我会欣赏任何想法。比你提前。
    【解决方案3】:

    也许这个场景需要的是实现一个持久的服务来保持调用之间的状态。代理类可用于第二个服务来查询第一个服务的会话状态。我不确定为什么需要这样做,但如果有帮助,请查看此链接: https://www.microsoftpressstore.com/articles/article.aspx?p=2228448&seqNum=3

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 1970-01-01
      • 2012-08-30
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 2016-06-17
      相关资源
      最近更新 更多