12

是否有人愿意解释或指向解释静态类和方法的范围如何与 ASP.NET 用户会话的范围交互的文章。

这是解释我的问题的更具体的情况:

  1. 用户 A 登录到一个 asp.net 网站。
  2. 在做某事时,用户 A 使用一种静态方法来初始化一些数据。
  3. 用户 B 登录到同一个 asp.net 网站。
  4. 用户 B 使用相同的静态方法。

一旦用户 B 击中数据,数据是否已经初始化?

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

4

2 回答 2

15

只要进程正在运行,静态数据就会存在。它附加到类型。

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

会话在这里不相关 - 只有过程。

如果进程被回收,则必须重新初始化数据。

于 2012-09-28T14:40:07.197 回答
5

检查这些帖子:为什么我的 ASP.Net 静态函数的“上下文”在用户会话之间交叉?

静态类的范围是什么?

C# 静态变量 - 范围和持久性

http://msdn.microsoft.com/en-us/library/ms173138(v=vs.100).aspx

简而言之:

一旦用户 B 击中数据,数据是否已经初始化?

是的

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

用户 B 将访问用户 A 初始化的数据

静态数据在 webapp 的整个应用程序域之间共享。它在您的 web 应用程序中服务请求的所有线程之间共享,它不以任何方式绑定到会话/线程/用户,而是绑定到整个 web 应用程序。

于 2012-09-28T14:53:24.770 回答