我的网络应用程序遇到了一个非常不愉快的问题。
应用程序设计如下:
- 根应用正在加载一个 Flex SWF,而后者又会在子应用 (MagickECB) 中加载第 3 方 Flex SWF 模块。
- 两个应用程序都引用了 Albums.dll,在 /bin 和 /MagickECB/bin 中找到了 dll,并且两个应用程序共享相同的应用程序池IIS。
编辑:这是两个项目,根应用项目和子应用项目。子应用项目引用根应用项目。
当从根应用程序的 flex 应用程序加载子应用程序的 flex 模块时,我们随机得到如下转换错误:
There was an error getting configuration of Photobook: [A]Albums.LocalizationConfiguration cannot be cast to [B]Albums.LocalizationConfiguration. Type A originates from 'Albums, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' at location 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\magickecb\4414db97\126f5aaf\assembly\dl3\cf281292\4a6ecec8_8a7bcb01\Albums.DLL'. Type B originates from 'Albums, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadFrom' at location 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\magickecb\4414db97\126f5aaf\assembly\dl3\017fab88\a91238d1_7977cb01\Albums.dll'. at Albums.LocalizationConfiguration.GetConfig() at Albums.CGlobal.GetUserLocale(String userHandle)
尝试调查此问题,我发现导致返回转换错误的 GetConfig 方法
return (LocalizationConfiguration)ConfigurationManager.GetSection("Localization/Localization");
Web.config 中的部分声明如下:(编辑:根应用程序的 web.config)
<sectionGroup name="Localization">
<section name="Localization" type="Albums.LocalizationConfigurationHandler, Albums"/>
</sectionGroup>
我的猜测是 GetSection 的内部代码试图在“LoadFrom”上下文中加载 Albums.dll,因此导致与加载在/bin 路径 (see context problematics) 中的原始 Albums.dll 发生冲突
我还注意到/MagickECB/Bin 中的其他 dll 也引用了 Albums.dll,因此我重建了所有项目,以便每个 DLL 都引用相同版本的 Albums.dll
最后,如果您检查临时文件中的 dll 完整路径,扩展名是不同的(大写与小写)..
任何有关如何解决此问题的意见将不胜感激!!
最佳答案
仔细检查你的引用,如果你比较你的两个 dll 位置,它们是不同的(扩展大写与小写不是问题):
临时 ASP.NET 文件\magickecb\4414db97\126f5aaf\assembly\dl3\cf281292\4a6ecec8_8a7bcb01\Albums.DLL
临时 ASP.NET 文件\magickecb\4414db97\126f5aaf\assembly\dl3\017fab88\a91238d1_7977cb01\Albums.dll
可能意味着您正在引用两个不同的文件 - 可能将一个作为项目引用,另一个直接作为文件引用。当您尝试构建有关引用的 Web 应用程序时,是否有任何警告?
编辑 __AssemblyInfo__.ini
上述文件夹中的文件将为您提供复制 Albums.dll 的路径。
关于C# A 类型不能转换为 B 类型(InvalidCastException)...上下文 hell ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4122788/