【发布时间】:2014-05-28 09:06:37
【问题描述】:
静态公共类中的静态公共变量在 C# MVC3 Web 项目中的 Web 请求之间的行为方式。这些类型的变量是否在请求之间保持值?
【问题讨论】:
-
是的,值将在请求之间和用户之间保留,但使用它们不是一个好主意(实际上取决于),我们在我的项目中面临很多问题。
标签: c# asp.net-mvc-3 static-members
静态公共类中的静态公共变量在 C# MVC3 Web 项目中的 Web 请求之间的行为方式。这些类型的变量是否在请求之间保持值?
【问题讨论】:
标签: c# asp.net-mvc-3 static-members
以最简单的形式回答您的问题;是的。任何静态的东西都会持续存在:
它们不会在同一应用程序的不同实例之间共享(例如,在负载平衡的情况下),并且当应用程序池回收时它们将失去它们的值。
一般来说,尝试使用静态变量保持状态是一个坏主意,除非您有非常具体的理由这样做。
如果您正在考虑使用静态变量在请求之间保存用户特定的数据,不要。因为它们是跨线程共享的(因此跨请求和用户),所以一旦您拥有多个用户,就会引入竞争条件。
选择另一种存储形式,例如会话状态、cookie 或 - 更好的是 - 数据库。
【讨论】:
static 变量是最糟糕的主意。