【问题标题】:Access all ongoing ASP.NET Session States访问所有正在进行的 ASP.NET 会话状态
【发布时间】:2015-10-27 00:54:12
【问题描述】:

我们拥有的是一个 ASP.NET Web 应用程序,它也执行一些 signalR 通知。由于 SignalR 无法访问 ASP.NET 会话状态,我们需要一些其他方法来验证它们是在 Web 应用程序上登录的客户端。

在大多数情况下,您会认为静态字典会有所帮助。只要其中一个 ASP.NET 控制器确保保留关键客户端信息的缓存(通过 IP/浏览器信息,或客户端稍后发送给 signalR 的某些生成的令牌)——只要完成了,然后 SignalR可以在将客户端连接添加到其池之前对其进行验证。

然而我们在服务器场的情况下工作,SessionState 由 SQL 支持。这意味着给定的服务器实例,即使它拥有所有客户端的静态缓存,也可能不知道客户端 C。当然,如果客户端 C 发出正常的 Web 请求,它会 知道 em>在客户端 C 获取 SessionState 时找出它。所以问题是,如果工作在正确/错误的时间被移交给第二个服务器实例(机器 B),其中机器 B 不知道客户端 C(除了通过上下文相关的 SessionState 获取,无法从 SignalR 访问) , 我们如何在 SignalR 端验证客户端?

它所需要的只是一些获取所有客户端的静态方法,或者只是 SessionState 的“静态”上下文(即服务器会话状态)。因为无论哪种方式,我们都可以筛选各个客户端的 SessionStates 并验证“是的,这个客户端在之前的机器上有一个会话状态”。

除了让客户端重新加载页面之外,还有其他方法可以让 ASP.NEt 在本地“缓存”其信息吗?这是我目前看到的唯一方式。

【问题讨论】:

    标签: asp.net signalr session-state


    【解决方案1】:

    我认为这是“SignalR 背板”的完美场景,它专为横向扩展 SignalR 的网络农场情况而设计。文章很多,请自行搜索。

    【讨论】:

      猜你喜欢
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多