Mos*_*ner 35
静态成员只具有当前工作进程的范围,因此它与用户无关,因为其他请求不一定由同一工作进程处理.
顺便说一句,默认的工作进程数是1,所以这就是为什么Web上充满了人们认为静态成员具有整个应用程序的范围的原因.
Otá*_*cio 33
静态变量范围适用于整个app域,这意味着其他会话也可以访问它.只有当您拥有具有不同服务器的服务器场时,才能拥有多个变量实例.
Dan*_*ert 15
正如其他人所提到的,静态变量对于整个应用程序是全局的,而不是单个请求.
要将单例全局设置为仅针对单个请求,可以使用HttpContext.Current.Items字典.
public class Singleton
{
private Singleton() { }
public static Singleton Instance
{
get
{
if (HttpContext.Current.Items["yourKey"] == null)
HttpContext.Current.Items["yourKey"] = new Singleton();
return (Singleton)HttpContext.Current.Items["yourKey"];
}
}
}
Run Code Online (Sandbox Code Playgroud)