Время жизни статической переменной Asp.net через обновление и постбэк - PullRequest
6 голосов
/ 11 ноября 2009

Решение:

Я объявил публичную статическую переменную уровня класса и инициализировал ее значением 0 в среде ASP.NET 3.5. При событии загрузки I увеличивается на 1 этой переменной

Проблема:

  1. После обновления страницы и даже Postback я получаю последние значения этой переменной. Переменная, объявленная как STATIC, не получает сброс при обновлении страницы и Postback?
  2. Я просто закрываю браузер и закрываю интегрированную среду разработки VS 2008 - хотя при повторном открытии снова запускаю то же веб-приложение, я получаю последнее увеличенное значение, а не 0 Мне интересно, как это возможно после закрытия приложения.

Не могли бы вы помочь в этом.

Ответы [ 3 ]

5 голосов
/ 11 ноября 2009

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

4 голосов
/ 11 ноября 2009

Статические переменные сохраняют свои значения в течение срока действия домена приложения.

Он выживет во многих сеансах браузера до тех пор, пока вы не перезапустите веб-сервер (IIS) или пока он не перезапустится самостоятельно (когда он решит, что ему нужно обновить свои используемые ресурсы).

2 голосов
/ 11 ноября 2009

Статические переменные действительны для весь AppDomain.

Закрытие VS 2008 IDE и / или прекращение отладки не всегда достаточно, чтобы привести к такому отключению AppDomain, на котором размещен ваш сайт. (Даже если веб-сайт размещен на тестовом сервере Vs 2008.

Одним из простых решений является «прикосновение» к файл web.config. (Например, добавить пробел и сохрани это)

Это обработает следующий запрос в новом домене приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...