Как статические свойства работают в среде asp.net?

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

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

Ответы

Ответ 1

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

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

Ответ 2

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

Значение будет там, пока рабочий процесс ASP.NET не переработает себя (что происходит периодически).

Ответ 3

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

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

Ответ 4

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