我们如何将网站的会话状态从一个州更改为另一个州

时间:2012-03-27 10:33:39

标签: asp.net session-state inproc session-state-server

基本上我的问题是我有一个大约3年前开发的网站,而开发时提议该网站将被少数人在互联网上使用。

但现在看来很多用户都在访问该网站。所以我们计划创建一个Web服务器场,我们的网站有多个服务器。

开发中的主要问题是旧网站使用InProc会话状态,现在因为我们要升级到多个服务器,我们要将InProc更改为Outproc,即StateServer会话状态。

您能否指导我进行此升级,如何以简单方便的方式实现,而不是在使用会话的每个页面上更改编码。

1 个答案:

答案 0 :(得分:1)

您将在此处获得的是将您的站点移动到许多Web服务器,这里的实际问题是“如何为每个用户保持与服务器相同的状态”。

有两种选择。

第一个选项是设置将用户拆分到服务器的路由器,使用“Sticky选项”,这意味着每个用户都坚持将他的会话连接到一个服务器,而只使用一个。在这种情况下,只要路由器做得好,使用inproc或sql server会话并不重要。当然,您不会将任何其他数据库用于公共数据。

第二个选项是使用sql server并将会话移动到服务器,但此处服务器必须位于一台服务器上,而其他服务器则从该服务器获取会话数据。您还可以在web.config上为所有Web服务器设置相同的密钥计算机。

所以对于这种情况你需要。

  1. 在一台服务器上设置公共/共享SQL服务器
  2. 在此会话数据库上安装(实际上是从asp.net运行脚本)
  3. 设置web.config以将此数据库用作会话
  4. 将web.config设置为具有相同的计算机密钥。
  5. 如果您将数据库用于其他数据,则将此数据库与会话数据库放在一起,并使共享也连接到该数据库。这里的要点是数据必须在一台计算机上运行,​​其他计算机连接到这一主数据。