Как статические свойства работают в среде asp.net? - PullRequest
17 голосов
/ 26 октября 2010

Если у меня был класс со статическим свойством, которое устанавливается, когда пользователь загружает определенную страницу, является ли это статическое значение уникальным для этого сеанса пользователя?

Другими словами, если второй пользователь затем загружает страницу и устанавливает статическое свойство, будет ли каждый пользователь иметь отдельное значение или оба будут использовать значение второго пользователя?

Ответы [ 4 ]

15 голосов
/ 26 октября 2010

Статика уникальна для домена приложения, все пользователи этого домена приложения будут иметь одинаковое значение для каждого статического свойства.Когда вы видите слово «статический», подумайте: «Это будет только один случай».Как долго длится этот экземпляр - это отдельный вопрос, но краткий ответ: он переменный.

Если вы хотите сохранить значения, специфичные для пользователя, загляните в Состояние сеанса .

3 голосов
/ 29 мая 2012

В дополнение к ответу Боба, есть, конечно, исключение:

public static object Item {
    get { return HttpContext.Current.Session["some_key"]; }
}
2 голосов
/ 26 октября 2010

Статические поля и свойства являются общими для всех экземпляров класса.Все ваши пользователи будут использовать одно и то же значение.

Значение будет сохраняться до тех пор, пока рабочий процесс ASP.NET не выполнит перезагрузку (что происходит периодически).

1 голос
/ 26 октября 2010

Нет, ничего особенного только потому, что это asp.net. ASP.NET сам по себе представляет собой обычную коллекцию сборок .NET. Если вы хотите сохранить вещи по сеансам, вам следует использовать состояние сеанса. Если нет, будьте осторожны, так как существует множество потоков, которые могут получить доступ к вашим статическим данным. Вы должны прочитать и узнать, как нити, блокировки и условия гонки работают вместе.

...