简单的问题,但经过几个小时的搜索,我还没有找到一个简单的答案。是否有一种简单的方法可以在多个服务器上运行的 ASP.NET MVC 4 网站中的所有会话之间共享全局变量?
在单个服务器上,我只需创建一个静态类,其中包含围绕成员访问器的适当线程同步。但这显然不会在服务器之间同步。
您会认为,因为保存每个会话状态非常容易,并且可以在服务器之间神奇地同步它,所以您可以对应用程序状态做同样的事情。但是我读过的所有东西都说应用程序状态是服务器本地的。
简单的问题,但经过几个小时的搜索,我还没有找到一个简单的答案。是否有一种简单的方法可以在多个服务器上运行的 ASP.NET MVC 4 网站中的所有会话之间共享全局变量?
在单个服务器上,我只需创建一个静态类,其中包含围绕成员访问器的适当线程同步。但这显然不会在服务器之间同步。
您会认为,因为保存每个会话状态非常容易,并且可以在服务器之间神奇地同步它,所以您可以对应用程序状态做同样的事情。但是我读过的所有东西都说应用程序状态是服务器本地的。
如果您的意思是存储会话状态,您有 3 个选项:
后两者提供您正在寻找的“共享全局变量”。请注意,会话状态服务是单点故障。如果您的 SQL 配置是冗余的,那么 SQL Server 会话状态存储可以是冗余的。
也可以看看:
如果您想迁移到 ASP.Net 本身不支持的其他解决方案,您可以使用:
注意我没有使用过 Memcached 或 Redis,但我听说过很棒的东西。
答案是您需要一个公共数据库,您可以在其中写入和读取公共变量。
所谓通用数据库,你甚至可以使用一个简单的xml文件——但它必须是一个文件,你的服务器之间的一个通用共享文件,这是最简单的方法。
听起来是时候将一些数据移动到持久存储(数据库、文件系统)并可选地在顶部添加一个缓存层(我们很高兴AppFabric用户)以提高性能。