Web表单中的ASP.NET全局变量

时间:2013-03-09 02:12:02

标签: asp.net asp.net-mvc

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

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

您认为,因为保存每个会话状态非常容易,并且可以在服务器之间进行神奇的同步,因此您可以对应用程序状态执行相同的操作。但我读过的东西都说应用程序状态是服务器本地的。

3 个答案:

答案 0 :(得分:1)

如果您的意思是存储会话状态,则有3个选项:

  • 进程内存储(听起来就像您正在使用的那样)
  • 会话状态服务
  • Microsoft SQL Server

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

另见:

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

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

答案 1 :(得分:0)

答案是你需要一个公共数据库来编写和阅读你的公共变量。

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

答案 2 :(得分:0)

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