Я храню некоторую информацию в статических переменных, определенных в классе страницы (не в Global.asax). Я только объявляю переменную в коде, например:
protected static int SomeGlobalUnsecureID;
protected static string SomeGlobalUnsecureString;
и определить переменную в событии PageLoad. Например, я проверяю идентификатор из базы данных, если он отличается от SomeGlobalUnsecureID, я обновляю SomeGlobalUnsecureID и String из другого места, в противном случае оставляю их как есть. Это совершенно безопасно в моем приложении. логика (т.е. эти данные небезопасны, каждый может получить к ним доступ, без проблем); Единственное, что я хочу сделать, - это
-
Удерживайте одинаковый объем памяти независимо от подключенного пользователя.
-
Изменить, если и только если постоянная информация отличается от постоянной в 'memory' (потому что фактически чтение строки занимает много времени для я.
Теперь, поскольку я делаю проверку в PageLoad, у меня нет проблем с перезагруженными страницами. Однако моя страница заполнена WebMethods, и иногда я вижу, что статические переменные обнуляются. И странная часть; сеанс все еще активен, даже когда статические переменные обнуляются (so- > нет перезапуска сервера или приложения пула и т.д.)
Это действительно странно для меня. Я предполагаю, что статическая переменная будет содержать свое значение до тех пор, пока приложение (каким-то образом) не закончится. Но даже сеанс не закончился, статическая переменная обнуляется. Что ты предлагаешь? Использует ли переменные приложения лучший выбор? Все документы, которые я читал в Интернете, предлагают статические переменные вместо переменных приложения, нужно ли их объявлять как-то иначе?