2009-11-11 2 views
6

Обход:Asp.net Статическое время Variable Жизни Через Refresh и PostBack

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

Проблема:

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

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

ответ

5

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

4

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

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

+1

И иногда при закрытии VS2008 сервер Cassini по-прежнему будет активным и не разгружается. Мальчик, который делает для какой-то забавной отладки global.asax. – Radu094

+1

Мне никогда не приходило в голову счастливо. – 2009-11-11 09:36:59

2

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

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

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

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