получил странный вопрос для вас, основываясь на некоторых странных событиях на нашем сайте. У нас есть четыре .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