IIS7: AppDomain не перерабатывается, когда следует? - PullRequest
3 голосов
/ 02 марта 2010

получил странный вопрос для вас, основываясь на некоторых странных событиях на нашем сайте. У нас есть четыре .DLLs в нашем решении ASP.Net (т.е. управляемый код в папке / bin). Этим утром мы обновили все четыре из них, сайт был протестирован и работал нормально.

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

Итак, после небольшого исследования мы обнаружили, что это была ошибка в одной из загруженных библиотек DLL, которая утром (т.е. не связана с той библиотекой, которую я загрузил днем).

То, что мы, похоже, обнаружили, это то, что по какой-то странной причине домен приложения не перезагружался должным образом, когда мы загружали наши библиотеки DLL утром. Некоторые изменения, внесенные в сайт, были введены в действие, но по крайней мере одна из библиотек DLL оставалась в кэше вместо обновления.

Когда я загрузил DLL позже в тот же день, это вызвало перезапуск AppDomain, который затем включал в себя ошибочную DLL, которая была загружена сегодня утром.

У кого-нибудь еще были проблемы с тем, что AppDomain не перерабатывал, когда это необходимо? Или, может быть, есть другое объяснение того, что это может быть? AFAIK AppDomain следует перезапускать каждый раз, когда вносится изменение в любой файл в папке / папке ... Если так, как он случайно кэшировал старую версию файла и не перезагружался должным образом?

Вот Скотт Форсайт , говорящий об утилизации AppDomain: http://weblogs.asp.net/owscott/archive/2006/02/21/ASP.NET-v2.0-2D00-AppDomain-recycles_2C00_-more-common-than-before.aspx

1 Ответ

1 голос
/ 02 марта 2010

Иногда сайт не перезагружается, если он находится под нагрузкой, так как IIS считает, что лучше продолжать работать, чем отключать всех на время, необходимое сайту для перезапуска.

В большинстве случаев я рекомендую всегда выпускать IISRESET после обновления файлов сайта. Это гарантирует, что все будет переработано после развертывания.

...