1

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

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

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

4

3 回答 3

1

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

  • 进程内存储(听起来像您正在使用的)
  • 会话状态服务
  • 微软 SQL 服务器

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

也可以看看:

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

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

于 2013-03-09T02:51:14.540 回答
0

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

所谓通用数据库,你甚至可以使用一个简单的xml文件——但它必须是一个文件,你的服务器之间的一个通用共享文件,这是最简单的方法。

于 2013-03-09T02:58:45.817 回答
0

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

于 2013-03-09T03:27:26.880 回答