2012-03-27 47 views
1

基本上我的问题是我有一个网站,这是在3年前开发的,而开发则建议这个网站将会被少数人在互联网上使用。我们如何才能将网站的会话状态从一个州改变为另一个州

但现在好像很多用户正在访问该网站。所以我们计划创建一个Web服务器农场,我们的网站上有多台服务器。在发展

主要问题是旧的网站上使用InProc会话状态,现在,因为我们正在升级到多台服务器,我们想改变InProcOutproc即StateServer会话状态。

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

+0

你的意思是你设置了一个SQL来保持会话状态,对吧? – Aristos 2012-03-27 10:46:05

+0

雅它可以是SQLServer或StateServer任何更高效的。我困惑在@MassimilianoPeluso回答他的意思是什么序列化? – Murtaza 2012-03-27 10:49:22

+0

这就是MSDN所说的:如果模式设置为StateServer,则存储在会话状态中的对象必须是可序列化的。有关可序列化对象的信息,请参见SerializableAttribute类。 – 2012-03-27 10:54:05

回答

1

你会在这里得到的是,你的网站移动到很多网络服务器,这里的实际问题是“如何保持每个用户关于服务器的相同状态”。

有两种选择。

第一选项是设置的用户分流到服务器,使用“粘性选项”,这意味着每个用户坚持使用其会话到一台服务器,且只有一个路由器。在这种情况下,如果您使用inproc或sql server会话,则无关紧要,只要路由器做得很好。当然,您不会使用任何其他数据库来处理常见数据。

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

因此,对于这种情况你需要。

  1. 要设置一个服务器上的共享/共享SQL服务器
  2. 要在此安装会话数据库(实际运行从asp.net脚本)
  3. 设置web.config中使用这个数据库会话
  4. 设置web.config具有相同的机器密钥。

如果您将数据库用于其他数据,则将该数据库与会话数据库放在一起,并且还可以将共享连接到该数据库。这里的要点是数据必须在一台计算机上运行,​​其他计算机连接到这个数据的主要数据。

+0

的说明,这很清楚!但我想问你,所有那些已经创建的会话是什么。如果我在'web.config'中做这个改变,我现在的代码行会出错? – Murtaza 2012-03-27 11:10:54

+0

@Murtaza所有准备好的会议都会丢失,新的会被制作出来。没有会议工作相同,无论你使用的媒体 – Aristos 2012-03-27 11:33:34

+0

这真的很令人头脑的答案......非常感谢。希望这对许多人有用 – Murtaza 2012-03-27 11:59:47

相关问题