ASP.NET静态类和asp.net会话

13

请问可以有人解释一下或是提供相关文章,介绍静态类和方法的作用域如何与ASP.NET用户会话的作用域相互影响。

以下是更具体情况,以解释我的问题:

  1. 用户A登录到一个ASP.NET网站。
  2. 当用户A执行某些操作时,使用了一个静态方法来初始化一些数据。
  3. 用户B登录到相同的ASP.NET网站。
  4. 用户B调用同样的静态方法。

当用户B调用该方法时,数据是否已经被初始化?

另外,如果用户A的ASP.NET会话在用户B访问网站之前过期了怎么办?

2个回答

15

静态数据的寿命与进程运行时间相同。它与类型相关。

如果初始化的数据位于静态上下文中,那么当用户B访问该方法时,它已经被初始化了。

此处与会话无关,只涉及进程。

如果进程被回收,那么数据将需要重新初始化。


5
请查看以下帖子:为什么我的ASP.Net静态函数的"context"会在用户会话之间交叉? 静态类的作用域是什么? C#静态变量 - 作用域和持久性 http://msdn.microsoft.com/en-us/library/ms173138(v=vs.100).aspx 简而言之:
当用户B访问时,数据是否已被初始化?
是的。
如果用户A的asp.net会话在用户B访问网站之前过期了怎么办?
用户B将访问由用户A初始化的数据。
引用如下:
静态数据在您的Web应用程序的整个应用程序域中共享。它在为请求提供服务的所有线程中共享,在任何方式上都不与会话/线程/用户绑定,而是与整个Web应用程序相关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接