IIS 7.5的缺陷,线程敏捷性和静态变量

Mat*_*att 0 .net c# asp.net iis

我有一个在IIS(ASP.NET)中运行的应用程序,并且很多次,页面加载但是呈现并填充了与实际请求页面的用户不同的用户的信息.用于呈现和填充页面的数据属于在大致相同的时间点也发起请求的用户.

这可能是由静态变量引起的,我现在看到的是线程敏捷性吗?

aqu*_*nas 10

这不是线程敏捷性的问题,这是使用静态变量的问题.静态变量对于PROCESS是静态的,而不是一个线程.因此,ASP.NET中的静态变量由对您的站点的每个请求共享.所以,问问自己:这个静态变量MEANT是在每个请求者之间共享,还是特定于一个请求者?例如:

static int TotalPageHits; //Count the number of times a page has been requested
Run Code Online (Sandbox Code Playgroud)

显然,这是为所有用户分享的完美数据.另一方面:

static string CurrentUserId; //DANGER WILL ROBINSON!!!!
Run Code Online (Sandbox Code Playgroud)

要放入HttpContext.Current.Items的任何特定于一个请求者的变量.

  • 我很高兴知道我不是唯一一个用"DANGER WILL ROBINSON"这句话来评论他们代码的人. (2认同)