我正在寻找超过 12 个小时来找到针对这个特定问题的正确解决方案......
我有一个利用 Interbase XE 数据库的 ASP MVC (.NET Framework 4.5) 应用程序。
只要我在自己的机器上本地运行就可以正常工作。但是,当我尝试将站点发布到远程服务器时,我收到一些汇编错误......
无法加载文件或程序集“Borland.Data.DbxCommonDriver”
版本 = 16.0.0.0,文化 = 中性,PublicKeyToken = a91a7c5705831a4f' 或
它的依赖项之一。找到的程序集的清单定义
与装配参考不匹配。 (HRESULT 的异常:
0x80131040)
除了查看互联网上发布的所有可能的解决方案(不幸的是,这对我没有帮助)。我还在 Reflector 中打开了 Borland.Data.DbxCommonDriver.dll。
令我惊讶的是,Reflector 指出我拥有的版本(本地和远程!!)具有 PublicKeyToken=91d62ebb5b0d1b1b代替a91a7c5705831a4f,所有其他设置都相同(包括版本号 16.0.0.0)。
所以我做的下一件事是追踪服务器上所有可能的 .dll 文件。我卸载了 ADO.NET 2.0 驱动程序,并删除了所有现有的 dll。
一旦服务器上的任何 DLL 被释放,我就重新启动它并重新安装 ADO.NET 2.0 for Interbase 驱动程序。
然而,我立即得到了同样的汇编错误。现在,我有点疲惫的想法......
- 显示的错误如何显示不同的 PublicKeyToken?
- 我是否需要将内容放入 web.config 文件中(以强制使用程序集等)?
- 如何确定错误的 PublicKeyToken 是从哪里引用的?
NOTES:
服务器机器是 64 位机器。这意味着我已将 ApplicationPool 设置为接受 32 位应用程序,以支持 Embarcadero 的 ADO.NET 2.0 驱动程序。
我使用 MS Visual Studio 2012 Pro 开发了我的 Web 应用程序。
资源:
https://forums.embarcadero.com/message.jspa?messageID=528498 https://forums.embarcadero.com/message.jspa?messageID=528498
http://docs.embarcadero.com/products/interbase/IBXEUpdate5/Readme.html http://docs.embarcadero.com/products/interbase/IBXEUpdate5/Readme.html