ASP中的静态属性.基于会话的Net将在所有用户之间共享

本文关键字:Net 用户 共享 之间 会话 属性 静态 于会话 ASP | 更新日期: 2023-09-27 18:11:43

对于以下2个静态属性,会在ASP.net网站的所有用户之间共享吗?似乎Property2将在ASP的所有用户之间共享。. Net网站,但不确定Property1.

public static object Property1 {
get { return HttpContext.Current.Session["some_key"]; }
set {  HttpContext.Current.Session["some_key"] = value;}
}
public static object Property2 { get;set;}

ASP中的静态属性.基于会话的Net将在所有用户之间共享

Property1仅在用户当前会话的范围内。静态部分不会改变这一点,因为它只是对指向用户特定数据的会话的包装。

Property2是一个对所有用户都相同的常规静态属性。

Property1中的getter/setter方法将引用特定的会话。由于Property2没有任何自定义getter/setter,底层私有变量存储在应用程序范围内,即在ASP的所有用户之间共享。网网站。

从学习的角度来看,这是一个很好的例子来了解差异。将静态转换为"非静态"的能力显示了编码中的灵活性,但是在实践中,您可能希望避免调用Property1 static,主要是因为您的静态属性在引用会话变量后不遵循静态变量的行为。它可能完全按照你的想法工作,但其他在你之后或与你一起的开发人员可能会对为什么它需要是静态的感到困惑。每种情况都是不同的,但是在这里,如果你愿意的话,引用单个会话的静态属性似乎会产生意图冲突。