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

C# 对HttpContext.Current.Session的静态引用是否会为所有用户返回相同的会话?,c#,asp.net,session,static,httpcontext,C#,Asp.net,Session,Static,Httpcontext,对于同一web应用程序的多个用户,以下代码中是否存在问题?我的意思是,我知道一个纯静态字符串将在单个ASP.NET应用程序的所有会话中共享,但鉴于它显式地引用了当前.Session,即使它是静态的,它似乎总是引用“当前用户”的会话实例 但是发生了一个错误,这可以解释为每个人都共享模式的当前值,因此最近的更改覆盖了其他人的模式值 (作为背景:此字符串位于整个应用程序中使用的Helpers类中。我不想在整个应用程序中对Session[“Mode”]进行硬编码引用,也不想在aspx.cs页面的每个方法

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

但是发生了一个错误,这可以解释为每个人都共享
模式的当前值,因此最近的更改覆盖了其他人的模式值

(作为背景:此字符串位于整个应用程序中使用的
Helpers
类中。我不想在整个应用程序中对
Session[“Mode”]
进行硬编码引用,也不想在aspx.cs页面的每个方法调用中都通过
Session[“Mode”]
。)


HttpContext.Current
始终返回当前请求的上下文(如果存在当前请求)


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

您的属性是
静态的。这实际上是用户之间共享属性的原因


有关详细信息,请参阅。

“获取或设置当前HTTP请求的HttpContext对象。”在本例中,该属性是
get
set
方法上的外观。因此,从本地会话获取数据的事实使得对该属性会话的引用依赖于会话,因此不会在用户之间共享。因为不能从静态成员中调用实例成员,我将回顾
HttpContext.Current.Session
,看看他们是如何解决这个问题的,并使其针对用户。如果我有时间,我会查一下,但答案会很有趣。
public static string Mode
{
    get
    {
        var value = HttpContext.Current.Session["Mode"];
        return (value ?? string.Empty).ToString();
    }
    set
    {
        HttpContext.Current.Session["Mode"] = value;
    }
}