ADO.NET 2.0 Interbase的驱动程序和ASP.NET错误集引用? [英] ADO.NET 2.0 Interbase Driver and ASP.NET wrong assembly reference?

查看:376
本文介绍了ADO.NET 2.0 Interbase的驱动程序和ASP.NET错误集引用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找了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...


  1. 如何能所显示的错误,显示出不同的公钥?

  2. 请我需要把事情在web.config文件(强制装配或这样的usuage)?

  3. 如何确定错误的公钥是从?
  4. 引用

注意:

的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆