C # Тип A не может быть преобразован в Тип B (InvalidCastException)… Контекстный ад?

У меня возникла очень неприятная проблема с моим веб-приложением.

Приложение разработано следующим образом:
- Корневое приложение загружает Flex SWF, который, в свою очередь, загружает сторонний модуль Flex SWF во вспомогательное приложение ( MagickECB ).
- Оба приложения ссылаются на Albums.dll , dll находятся в / bin и / MagickECB / bin , и оба приложения используют один и тот же пул приложений в IIS.

РЕДАКТИРОВАТЬ : это два проекта: проект корневого приложения и проект вспомогательного приложения. Ссылка на проект вспомогательного приложения Проект корневого приложения.

При загрузке гибкого модуля вспомогательного приложения из гибкого приложения корневого приложения мы случайным образом получаем следующую ошибку приведения:

Произошла ошибка при получении конфигурация фотокниги: [A] Albums.LocalizationConfiguration нельзя применить к [B] Albums.LocalizationConfiguration. Тип А происходит от "Альбомы, Версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null 'в контексте " По умолчанию " в местоположении ' C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Файлы \ magickecb \ 4414db97 \ 126f5aaf \ assembly \ dl3 \ cf281292 \ 4a6ecec8_8a7bcb01 \ Albums.DLL '. Тип B происходит от «Альбомов, Версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null 'в контексте " LoadFrom " в местоположении ' C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Файлы \ magickecb \ 4414db97 \ 126f5aaf \ assembly \ dl3 \ 017fab88 \ a91238d1_7977cb01 \ Albums.dll '. в Albums.LocalizationConfiguration.GetConfig () в Albums.CGlobal.GetUserLocale (String userHandle)

Пытаясь исследовать эту проблему, я обнаружил, что метод GetConfig вызывает ошибку приведения.

return (LocalizationConfiguration)ConfigurationManager.GetSection("Localization/Localization");

Раздел в Web.config объявлен следующим образом: ( EDIT : корневой каталог веб-приложения. config)

 
    

Я предполагаю, что внутренний код GetSection пытается загрузить Albums.dll в контекст «LoadFrom» и, следовательно, вызывает конфликт с исходным Albums.dll, загруженным по пути / bin ( см. контекст проблематика )

Я также отмечаю, что другие библиотеки DLL в / MagickECB / Bin также ссылаются на Albums.dll, поэтому я перестраиваю все проекты так, чтобы каждая DLL ссылалась на одну и ту же версию Albums.dll

Наконец, если вы отметите полный путь к dll во временных файлах, расширения разные (верхний регистр и нижний регистр) ..

Мы будем очень благодарны за любую информацию о том, как решить эту проблему !!

9
задан Brian Tompsett - 汤莱恩 8 June 2015 в 14:51
поделиться