访问所有正在进行的ASP.NET会话状态

访问所有正在进行的ASP.NET会话状态,asp.net,signalr,session-state,Asp.net,Signalr,Session State,我们拥有的是一个ASP.NET web应用程序,它还执行一些信号器通知。由于SignalR无法访问ASP.NET会话状态,我们需要其他方法来验证它们是否是登录到web应用程序的客户端 在大多数情况下,您会认为静态字典会有所帮助。只要其中一个ASP.NET控制器确保保留关键客户端信息的缓存(通过IP/浏览器信息,或客户端稍后发送给Signal的某些生成令牌)——只要这样做了,Signal就可以在将客户端连接添加到其池之前验证客户端连接 然而,我们在服务器场的情况下工作,会话状态由SQL支持。这意味

我们拥有的是一个ASP.NET web应用程序,它还执行一些信号器通知。由于SignalR无法访问ASP.NET会话状态,我们需要其他方法来验证它们是否是登录到web应用程序的客户端

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

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

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


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

我认为这是“信号机背板”的完美方案,它是为网络农场情况而设计的,可以扩展信号机。大量文章可用,请搜索