asp.net - ASP.NET 中的负载平衡产生的问题

标签 asp.net web-applications

0 我有一个 ASP.NET 3.0 应用程序,可以在一台服务器上正常运行。它使用应用程序变量来检查用户是否已 checkout 文件并为所有其他用户锁定该文件。当我将应用程序放在负载平衡服务器上时,应用程序没有按预期工作,因为多个用户被发送到多个服务器,并且每个用户都可以 checkout 所需的文件。

要点是,有什么方法可以在我的应用程序中共享应用程序变量,即使它分布在多个服务器上。或者有更好的方法来获取全局变量吗?

编辑:我正在检查应用程序[“FileLocked”] checkout 的文件是真还是假

最佳答案

有两件事需要您考虑:

  1. 在负载平衡环境中,一台服务器中的实例数据将不可用于另一台服务器。虽然您可以使用进程外 session 状态,但您无法轻松地使缓存项或静态类数据跨服务器可用。用户的请求并不总是被路由到同一服务器(除非您使用粘性 session 之类的东西) - 这可能会导致其他问题。

  2. 您可能应该使用更持久的机制(如锁定文件)来确定特定用户是否正在使用文件。否则,您可能会在系统中引入竞争条件 - 如果用户的 session 结束时没有解锁文件,您最终会在系统中出现孤立的锁定文件。

关于asp.net - ASP.NET 中的负载平衡产生的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1632546/

相关文章:

asp.net - 如何使用动态导航制作动态内容?

c# - 无法加载文件或程序集 'Oracle.DataAccess 错误

c# - Javascript - 调用 ASP.NET WebService - 服务器方法 'methodName' 失败

apache - 在 mod_proxy 重定向上保留原始请求 URL

iphone - iPhone 与 Android 上的 Web 应用程序性能

java - 使用 JAVA 的 struts2 中的简单登录 Web 应用程序的第二页未加载?

asp.net - AngularJS 和 ASP.Net 中的单页应用程序工作正常,但是当我在浏览器中刷新页面时,出现 404 错误

c# - 在 ASP.net C# 中不使用 GridView 输出数据集的最简单方法是什么

php - 如何在我的结构/环境中使用 GIT?

email - 在 Gmail 中,使用 Google Apps Script,是否可以将我收到的已翻译电子邮件转发到另一个电子邮件地址?