静态属性如何在asp.net环境中工作?

如果我有一个具有静态属性的类,该属性是在用户加载特定页面时设置的,那么该用户会话的静态值是否是唯一的?

换句话说,如果第二个用户然后加载页面并设置静态属性,每个用户是否具有不同的值,或者都将使用第二个用户值?

静态对于应用程序域是唯一的,该应用程序域的所有用户将为每个静态属性共享相同的值。 当你看到单词static时,请想“只有一个这样的实例”。 该实例持续多长时间是一个单独的问题,但简短的回答是它是可变的。

如果要存储特定于用户的值,请查看会话状态 。

除了鲍勃的回答,当然也有这样的例外:

public static object Item { get { return HttpContext.Current.Session["some_key"]; } } 

静态字段和属性在类的所有实例之间共享。 您的所有用户最终都会分享相同的价值。

值将一直存在,直到ASP.NET工作进程自行循环(定期发生)。

不,这没什么特别的,因为它是asp.net。 ASP.NET本身只是一个常规的.NET程序集。 如果要保存每个会话的内容,则应使用会话状态。 如果没有,请注意,因为有许multithreading可以访问您的静态数据。 您应该阅读并了解线程,锁和竞争条件如何协同工作。