2013-03-09 65 views
1

简单的问题,但几个小时的搜索后,我还没有找到一个简单的答案。在多个服务器上运行的ASP.NET MVC 4网站中,是否有一种简单的方法可以在全部会话中共享全局变量?ASP.NET表单中的全局变量

在单个服务器上,我只需创建一个静态类,并在成员访问器周围包含适当的线程同步。但是,这显然不会在服务器之间同步。

你会认为,因为保存每会话状态非常简单,并且它在服务器之间神奇地同步,所以你可以在应用程序状态下做同样的事情。但是我读过的东西都说应用程序状态是服务器本地的。

+3

将应用程序状态变量保存到数据库如何? – Tim 2013-03-09 02:15:44

回答

0

听起来好像是时候将一些数据移动到一个持久性存储(数据库,文件系统)并且可选地添加一个缓存层(我们很高兴AppFabric用户)在性能上。

1

如果你指的会话状态的存储,你有3种选择:

  • 进程内存储(这听起来像你使用的是什么)
  • 会话状态服务
  • 的Microsoft SQL Server

后者2提供您正在寻找的“共享全局变量”。请注意,会话状态服务是单点故障。如果您的SQL配置是冗余的,则SQL Server会话状态存储可能是冗余的。

参见:

如果你想移动到本身不支持ASP.Net其他解决方案,你可以使用:

注意我没有使用Memcached或Redis,但我听说过很棒的东西。

0

答案是,您需要一个共同的数据库,您可以在其中编写和读取您的公共变量。

通过平均公用数据库,您甚至可以使用简单的xml文件 - 但它必须是文件,服务器之间的公用共享文件,这是最简单的方法。