Tengo un problema muy desagradable con mi aplicación web.C# Tipo A no se puede convertir a Tipo B (InvalidCastException) ... ¿Contexto infierno?
La aplicación está diseñada de la siguiente manera:
- La raíz de la aplicación se carga un archivo SWF Flex, que a su vez carga una tercera parte del módulo Flex SWF en una aplicación secundaria (MagickECB).
- referencia tanto Aplicaciones Albums.dll, DLL encuentra en /bin y /MagickECB/bin y ambas aplicaciones comparten el mismo grupo de aplicaciones en IIS.
EDIT: Son dos proyectos, el proyecto de la aplicación raíz y el proyecto subapp. Proyecto de subaplicación proyecto de aplicación raíz de referencia.
Al cargar módulo de flexión de la aplicación secundaria desde la aplicación de la flexión de la aplicación de la raíz, obtenemos al azar un error de reparto como sigue:
Hubo conseguir un error configuración del álbum de fotos: [A] Albums.LocalizationConfiguration no se puede convertir a [B] Albums.LocalizationConfiguration. Tipo A se origina en 'álbumes, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' en el contexto 'defecto' en la ubicación 'C: \ WINDOWS \ Microsoft.NET \ Framework \ v2 .0.50727 \ Temporal ASP.NET Archivos \ magickecb \ 4414db97 \ 126f5aaf \ assembly \ dl3 \ cf281292 \ 4a6ecec8_8a7bcb01 \ Albums.DLL '. tipo B se origina de 'Album, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' en el contexto 'LoadFrom' en la ubicación 'C: \ WINDOWS \ Microsoft.NET \ Framework \ v2 .0.50727 \ Temporal ASP.NET Archivos \ magickecb \ 4414db97 \ 126f5aaf \ assembly \ dl3 \ 017fab88 \ a91238d1_7977cb01 \ Albums.dll '. en Albums.LocalizationConfiguration.GetConfig() en Albums.CGlobal.GetUserLocale (String userHandle)
Tratando de investigar este asunto, descubrí el método GetConfig causando devolvió el error fundido
return (LocalizationConfiguration)ConfigurationManager.GetSection("Localization/Localization");
la sección en el Web.config se declara de la siguiente manera: (EDITAR: raíz web.config de la aplicación)
<sectionGroup name="Localization">
<section name="Localization" type="Albums.LocalizationConfigurationHandler, Albums"/>
</sectionGroup>
Mi conjetura sería que el código interno de GetSection intenta cargar Albums.dll en el contexto "LoadFrom" y por lo tanto causar un conflicto con el Albums.dll original cargado en la ruta/bin (see context problematics)
I También tenga en cuenta que otros dlls en/MagickECB/Bin también hacen referencia a Albums.dll, por lo que reconstruyo todos los proyectos para que cada DLL haga referencia a la misma versión de Álbumes.DLL
pasado, si se comprueba la ruta completa DLL en los archivos temporales, las extensiones son diferentes (en mayúsculas vs minúsculas) ..
Cualquier opinión sobre la manera de resolver este problema sería muy apreciada !!
Sin aviso durante el tiempo de compilación. Tengo dos proyectos, el proyecto de la aplicación raíz y el proyecto subapp. Proyecto de aplicación raíz de referencia de Subapp. – Breakdown
Estaba pensando en Albums.dll. ¿Cómo se hace referencia en ambos proyectos? ¿Es ese tu proyecto? – Mihailo
Sí, ambos son mis proyectos. Hago referencia a Albums.dll (que es la salida del proyecto raíz) en el proyecto secundario a través de la referencia del proyecto. ¿Es eso lo que querías saber? (Sin C/P en el contenedor del proyecto de la aplicación secundaria) – Breakdown