У меня есть несколько веб-сайтов ASP.NET 2.0 на IIS 6 и Windows Server 2003.
Каждый сайт ссылается на некоторые библиотеки DLL: дизайн, логика и так далее.
Каждый сайт находится в отдельном ApplicationPool с конфигурацией по умолчанию, касающейся методов переработки.
Каждая DLL имеет строгое имя (не задерживается) и имеет версию, которая никогда не изменяется (2.0.0.0), все DLL помещаются в GAC.
После того, как я обновил DLL в GAC (т.е. MyLibrary.dll), которая изменилась в чем-то (метод, классы ..) для использования на веб-сайте «A», и после переработки только пул приложений «A» , когда я пытаюсь получить доступ к веб-сайту "B", который ссылается на ту же DLL, я получаю общую ошибку об этой DLL:
Манифест найденной сборки
определение не соответствует сборке
ссылка. (Исключение из HRESULT:
0x80131040)
Конечно, в DLL ничего не изменилось, кроме кода, той же сильной клавиши, той же версии, культуры. Конечно, ошибка исчезает при переработке пула приложений "B".
Что может вызвать странное, СЛУЧАЙНОЕ (я должен сказать!) Поведение? Есть что-то еще, например, хеширование, которое используется для сравнения сборок?
Добавление
- Perpetualcoder спросил меня, как ссылки на библиотеки DLL, если с полным именем, я думаю, что это, здесь строка web.config:
сборка = "MyNamespace.MyComponent,
Версия = 2.0.0.0, Культура = нейтральная,
PublicKeyToken = 1234567890ASDFGH "