【问题标题】:User specific variables in ASP.NET [duplicate]ASP.NET 中的用户特定变量 [重复]
【发布时间】:2014-06-11 12:49:38
【问题描述】:

我是一名进入 Web 开发的 Windows 窗体专家。在我所有其他程序上,我会创建一个静态类来保存程序范围的变量,例如

public static class GlobalVariables
{
public static DateTime expDate;
public static DateTime quoteDate; 
public static decimal discountTotal1 = 0;
public static decimal discountTotal2 = 0;
public static decimal discountTotal3 = 0;
public static decimal finalTotal;
public static decimal netWeight;
public static decimal qlWeight;
public static decimal runningTotal;
public static decimal workingTotal;
}

我的一位专业 Web 开发人员朋友说,当多个用户使用我的 Web 应用程序时,所有这些变量都会被覆盖。

他说的对吗?如果是,为什么?如何使这些变量特定于用户?

【问题讨论】:

  • 请注意,静态变量在 WinForms 中也是不好的做法,但如果您不尝试测试代码或拥有任何东西的多个实例,则可以使用它(因为您可以控制环境不像网站的情况)。

标签: c# asp.net static webforms


【解决方案1】:

如果您需要全局变量,请在 Web 应用程序中使用 Session 变量。 例如:Session["discountTotal1"] = 0; 这些会话变量是用户特定的。

静态变量范围是应用程序范围的,将在所有用户之间共享。您需要使用 Session 来存储每个用户,因此它可以在所有页面中访问。另一方面,如果您只是在特定页面上需要它,则可以将其保存在 ViewState 中并可以在回发中获取。

【讨论】:

  • 请注意,会话最终与用户的浏览器相关联 - 因此,如果用户在其浏览器中打开多个“选项卡”,它们将共享同一个会话,并且您可能会出现不良行为,具体取决于你用这些数据做什么。参考文献stackoverflow.com/questions/3967205/…
猜你喜欢
  • 2019-01-09
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多