ADO.NET 2.0 Interbase的驱动程序和ASP.NET错误集引用? [英] ADO.NET 2.0 Interbase Driver and ASP.NET wrong assembly reference?
问题描述
我找了12小时以上,以找到这个特定的问题得到妥善解决......
我有利用一个Interbase的XE数据库的ASP MVC(.NET框架4.5)的应用程序。
I am looking for over 12 hours to find a proper solution for this particular problem... I have an ASP MVC (.NET framework 4.5) application that utilizes an Interbase XE database.
只要我在我自己的机器上运行它,它工作正常。然而,当我尝试将网站发布到我的远程服务器上,我得到一些装配错误...
As long as I run it locally on my own machine, it works correctly. However, when I try to publish the site to my remote server, I get some assembly errors...
无法加载文件或程序集Borland.Data.DbxCommonDriver,
版本= 16.0.0.0,文化=中性公钥= a91a7c5705831a4f或
它的一个依赖。在位于集清单定义
不匹配的程序集引用。 (从HRESULT异常:
0x80131040)
Could not load file or assembly 'Borland.Data.DbxCommonDriver, Version=16.0.0.0, Culture=neutral, PublicKeyToken=a91a7c5705831a4f' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
除了在看张贴在网上(这并没有为我帮助不幸)在每一个可能的解决方案。我在反射器还开了Borland.Data.DbxCommonDriver.dll。
Besides on looking on every possible solution posted on the internet (which did not help for me unfortunately). I also opened up the Borland.Data.DbxCommonDriver.dll in Reflector.
让我吃惊的还有,就是反射指出的版本我已经(包括本地和远程!!)有公钥= 91d62ebb5b0d1b1b 而不是 a91a7c5705831a4f ,所有其他设置是相等的(包括的versionNumber 16.0.0.0)。
What amazes me there, is that Reflector states that the version I have (both local AND remote!!) has PublicKeyToken=91d62ebb5b0d1b1b instead of a91a7c5705831a4f, all other settings are equal (including the versionnumber 16.0.0.0).
所以,我做的下一件事,被跟踪向下servermachine所有可能的.dll文件。我卸载了ADO.NET 2.0驱动程序,并删除DLL的所有现有的出现。
一旦服务器被释放的任何DLL的,我重新启动它并重新安装了ADO.NET 2.0 Interbase的驱动程序。
So the next thing I did, was tracing down all possible .dll files on the servermachine. I uninstalled the ADO.NET 2.0 driver, and removed all existing occurrences of the dll's. As soon as the server was freed of any DLL's, I rebooted it and reinstalled the ADO.NET 2.0 for Interbase driver.
不过,我立刻得到了同样的装配误差。现在,我用尽想法一点点...
However, I instantly got the same assembly error. Now, I am a little bit exhausted of ideas...
- 如何能所显示的错误,显示出不同的公钥?
- 请我需要把事情在web.config文件(强制装配或这样的usuage)?
- 如何确定错误的公钥是从? 引用
注意:
的servermachine是一个64位机。这意味着我已经设置了ApplicationPool接受32位应用程序,以支持从Embarcadero公司的ADO.NET 2.0驱动程序。
The servermachine is a 64-bit machine. This means that I have set the ApplicationPool to accept 32-bit applications, in order to support the ADO.NET 2.0 drivers from Embarcadero.
我已经开发了我的web应用程序与微软的Visual Studio 2012中临。
I have developed my web application with MS Visual Studio 2012 Pro.
资源:
https://forums.embarcadero.com/message.jspa?messageID=528498
http://docs.embarcadero.com/products/interbase/IBXEUpdate5/Readme.html
推荐答案
在几个星期后,最后,我已经设法解决这一具体问题。
它原来是一个简单的解决方案,因为简单的解决方案是最常见的那些最难找到...
Finally after a few weeks, I have managed to solve this particular issue. It turned out to be a simple solution, as simple solutions are most often the hardest ones to find...
原来,Embarcadero公司的RAD Studio有Borland.Data.DbxCommonDriver.dll,Borland.Data.AdoDBXClient.dll和Borland.Data.DBXInterBaseDriver.dll本地安装的为好。这些dll的比DLL的由Embarcadero公司提供的ADO.NET 2.0驱动程序提供了不同的版本号。我跟踪下来通过执行在Windows注册表中搜索。所以,如果你正面临一个平等的问题,找出哪些驱动程序注册在注册表中找到自己的准确位置......
It turns out that Embarcadero RAD Studio has the Borland.Data.DbxCommonDriver.dll, Borland.Data.AdoDBXClient.dll and the Borland.Data.DBXInterBaseDriver.dll installed locally as well. These dll's have a different version number than the DLL's provided by the ADO.NET 2.0 drivers provided by Embarcadero. I tracked this down by performing a search in the Windows Registry. So if you are facing an equal problem, find out what drivers are registered in the registry to find their exact location...
移除对ADO.NET 2.0驱动程序(通常安装在C:\\ Embarcadero公司\\ Interbase_ADO.NET)所指出的参考文献后设置为DLL的位于Embarcadero公司RAD Studio安装文件夹中的引用,事情仍在当地工作
After removing the references that pointed towards the ADO.NET 2.0 drivers (typically installed at C:\Embarcadero\Interbase_ADO.NET) and setting the references to the DLL's located at the Embarcadero RAD Studio installation folder, things were still working locally.
发布站点之后,它仍然没有奏效。所以我删除了在machine.config文件中的每个参考,并更新了web应用的web.config文件。最后,我部署文件dbxconnections.ini'和'dbxdrivers.ini我旁边web应用(这是在<一说href=\"http://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/EN/html/devnet/deployingdbnetapps_xml.html\"相对=nofollow称号=部署数据库应用程序>此Embarcadero公司知识库文章)。
After publishing the site, it still did not work. So I removed every reference from the machine.config files and updated the web.config file for the webapplication. Finally, I deployed the files 'dbxconnections.ini' and 'dbxdrivers.ini' alongside my webapplication (which was stated in this Embarcadero knowledgebase article).
清理服务器后,我做了web应用的另一个发布和它的作品!
它仍然是一个遗憾但是有这些可用的驱动Borland.Data.DbxXXX这么多不同的版本,要真正搞清楚什么是错的事情可能变得棘手。
After cleaning the server, I did another publish of the webapplication and it works! It still is a pity however that there are so many different versions available of these Borland.Data.DbxXXX drivers, things might get tricky to really find out what is wrong.
虽然我仍然怀疑没有很多面临这一具体问题的程序员,我仍然认为这可能是很方便的发布我的解决方案。我希望它可以帮助:)
Though I still doubt that there are not many programmers facing this particular issue, I still thought it might be handy to post my solution. I do hope it may help :)
这篇关于ADO.NET 2.0 Interbase的驱动程序和ASP.NET错误集引用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!