Как статические свойства работают в среде 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. Если вы хотите сохранить вещи за сеансы, вы должны использовать состояние сеанса. Если нет, будьте осторожны, так как существует много потоков, которые могут обращаться к вашим статическим данным. Вы должны прочитать и узнать, как работают потоки, блокировки и условия гонки.