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

Dev*_*rke 5 c# asp.net session static httpcontext

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

但是一个错误正在发生,可以通过共享当前值的每个人来解释Mode,因此最近的更改会覆盖其他人的模式值.

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

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

Joh*_*ers 8

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

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