Я зберігаю деяку інформацію у статичних змінних, визначених у класі сторінки (не в Global.asax). Я оголошую змінну лише в коді, як:
protected static int SomeGlobalUnsecureID;
protected static string SomeGlobalUnsecureString;
і визначити змінну в події PageLoad. Наприклад, я перевіряю ідентифікатор з бази даних, якщо він відрізняється від SomeGlobalUnsecureID, я оновлюю SomeGlobalUnsecureID і String звідкись ще, інакше залишаю їх як є. Це абсолютно безпечно в моєму додатку. логіка (тобто ці дані не захищені, кожен може отримати до них доступ, не проблема); єдине, що я хочу досягти - це
Тримайте однакову кількість пам'яті незалежно від підключених користувачів
Змінюйте тоді і лише тоді, коли постійна інформація відрізняється від тієї, що міститься в «пам'яті» (адже насправді читання рядка для мене займає багато часу.
Тепер, оскільки я роблю перевірку в PageLoad, у мене не виникає проблем із перезавантаженими сторінками. Однак моя сторінка повна WebMethods, і іноді я бачу, що статичні змінні обнулені. І дивна частина; сеанс все ще активний, навіть якщо статичні змінні обнулені (тому-> немає перезапуску сервера чи додатку. пулу тощо)
Для мене це справді дивно. Я припускаю, що статична змінна буде зберігати своє значення, поки додаток (якимось чином) не закінчиться. Але навіть термін дії сеансу не закінчився, статична змінна обнуляється. Що ти пропонуєш? Чи є кращим вибором використання змінних додатків? Усі документи, які я читав в Інтернеті, пропонують статичні змінні замість змінних додатків, чи потрібно мені оголошувати їх якимось іншим чином?