0 我有一个 ASP.NET 3.0 应用程序,可以在一台服务器上正常运行。它使用应用程序变量来检查用户是否已 checkout 文件并为所有其他用户锁定该文件。当我将应用程序放在负载平衡服务器上时,应用程序没有按预期工作,因为多个用户被发送到多个服务器,并且每个用户都可以 checkout 所需的文件。
要点是,有什么方法可以在我的应用程序中共享应用程序变量,即使它分布在多个服务器上。或者有更好的方法来获取全局变量吗?
编辑:我正在检查应用程序[“FileLocked”] checkout 的文件是真还是假
最佳答案
有两件事需要您考虑:
在负载平衡环境中,一台服务器中的实例数据将不可用于另一台服务器。虽然您可以使用进程外 session 状态,但您无法轻松地使缓存项或静态类数据跨服务器可用。用户的请求并不总是被路由到同一服务器(除非您使用粘性 session 之类的东西) - 这可能会导致其他问题。
您可能应该使用更持久的机制(如锁定文件)来确定特定用户是否正在使用文件。否则,您可能会在系统中引入竞争条件 - 如果用户的 session 结束时没有解锁文件,您最终会在系统中出现孤立的锁定文件。
关于asp.net - ASP.NET 中的负载平衡产生的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632546/