跨不同ASP.NET请求的静态属性

时间:2013-07-26 06:21:11

标签: c# asp.net

如果我创建一个静态属性MyLanguage并且一个请求将其值设置为1,同时另一个线程将其设置为2 - 最终值是什么? MyLanguage

单个MyLanguge属性是否在ASP.NET会话中共享?

3 个答案:

答案 0 :(得分:8)

在应用程序域中共享静态属性/字段。因此,您的所有会话都应该看到相同的值

唯一的例外是当您在静态字段上使用ThreadStatic属性时,在这种情况下,每个线程都会看到自己的值。例如

[ThreadStatic]
static int counter = 0; // each thread sees a different static counter.

答案 1 :(得分:2)

它将是2.静态字段,属性在对象之间共享。所以最新的设置值将是所有实例的更新。

来自MSDN

使用static修饰符声明一个静态成员,该成员属于类型本身而不是属于特定对象。 static修饰符可以与类,字段,方法,属性,运算符,事件和构造函数一起使用,但不能与索引器,析构函数或类以外的类型一起使用。有关更多信息

答案 2 :(得分:0)

静态对应用程序域是唯一的,该应用程序域的所有用户将为每个静态属性共享相同的值。

当你看到单词static时,请想“只会有一个这样的实例”。该实例持续多长时间是一个单独的问题,但简短的回答是它是可变的。

如果您想将特定于用户的值存储到Session State