Статические переменные ASP.NET остаются, когда я останавливаю свое приложение! - PullRequest
0 голосов
/ 03 декабря 2009

У меня есть несколько статических классов в моем приложении. Когда я запускаю приложение, останавливаю отладку и перезапускаю, я замечаю, что эти переменные остаются в памяти! Поэтому, когда приложение завершается, они остаются позади и подключаются к следующему экземпляру приложения. Это дает действительно сумасшедшие результаты, как и следовало ожидать.

Можете ли вы программно сказать статической переменной уничтожить себя, когда приложение завершится?

Ответы [ 2 ]

7 голосов
/ 03 декабря 2009

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

Я бы добавил, что если тот факт, что статические переменные имеют тенденцию быть постоянными, приводит к сумасшедшим результатам, вы, вероятно, неправильно их используете и, возможно, вообще не должны использовать статические переменные.

1 голос
/ 03 декабря 2009

Остановка отладчика не останавливает IIS или Cassini.

Если вы используете Cassini, вам необходимо явно остановить его из командной строки, чтобы перезапустить его.

В противном случае вы можете попробовать изменить web.config для принудительной перезагрузки.

Я однажды подал ошибку об этом в Connect; Microsoft заявила, что это «по замыслу».

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