对HttpContext.Current.Session的静态引用是否为所有用户返回相同的会话?

在同一Web应用程序的多个用户方面,以下代码是否存在问题? 我的意思是,我知道一个纯静态字符串将在单个ASP.NET应用程序的所有会话中共享,但鉴于这明确引用了Current.Session ,即使它是静态的,它似乎总是引用“当前用户”的会话实例。

但是一个错误正在发生,可以解释为每个人共享Mode的当前值,从而最近的更改覆盖其他人的模式值。

(作为背景:此字符串位于整个应用程序中使用的Helpers类中。我不希望在整个应用程序中对Session["Mode"]进行硬编码引用,并且不希望必须传递Session["Mode"]来自aspx.cs页面的每个方法调用中的Session["Mode"] 。)

 public static string Mode { get { var value = HttpContext.Current.Session["Mode"]; return (value ?? string.Empty).ToString(); } set { HttpContext.Current.Session["Mode"] = value; } } 

HttpContext.Current总是返回当前请求的上下文(如果有当前请求)。

由于每个用户将执行不同的请求,因此每个上下文将是不同的。

你的财产是static 。 这实际上是用户之间共享属性的原因。

有关更多详细信息,请参阅多用户ASP.NET Web应用程序中的静态变量范围 。