Web请求中的静态变量

mig*_*eia 3 c# static-members asp.net-mvc-3

静态公共类中的静态公共变量如何在C#MVC3 Web项目中的Web请求之间表现.这些类型的变量是否在请求之间保留了值?

Ant*_*t P 8

以最简单的形式回答你的问题; 是.任何静态的东西都会持续存在:

  • 请求之间
  • 遍及所有用户

它们不会在同一应用程序的不同实例之间共享(例如,在负载平衡的情况下),并且当应用程序池回收时它们丢失它们的值.

一般来说,尝试使用静态变量来保持状态是个坏主意,除非你有一个非常具体的理由这样做.

如果您正在考虑使用静态变量来保存请求之间的用户特定数据,请不要.因为它们是跨线程共享的(因此跨越请求和用户),所以只要有多个用户,就会引入竞争条件.

选择其他形式的存储,例如会话状态,cookie或 - 更好的是 - 数据库.

  • 好答案.当涉及用户敏感数据时,使用`static`变量是最糟糕的想法. (2认同)