Oracle数据访问版本问题



我正在使用ODP.NET连接到oracle。我的测试服务器安装了两个版本的Oracle(v4和v2)。我有一个第三方应用程序连接到一个版本(v4),我的应用程序连接到另一个(v2)。

当我使用Visual studio运行我的应用程序时,它完美地工作,没有任何错误。但是,当我发布并从IIS运行时它会抛出错误,说

无法加载文件或程序集。= 4.121.1.0 DataAccess,版本,Culture=neutral, PublicKeyToken=89b483f429c47342'或其中一个依赖关系。定位的程序集的清单定义不会匹配程序集引用。(Exception from HRESULT: 0x80131040)

如果我把Oracle dll与4.1版本,它将开始显示一个不同的错误

无法加载文件或程序集。DataAccess'或其其中一个依赖关系。试图加载带有错误代码的程序格式。

如何在不从机器上删除(卸载)oracle的情况下解决这个问题?


注意:在当前场景下,oracle版本不能从服务器上删除。因此,两个版本都将保持安装状态。

第一个错误消息告诉您没有安装正确版本的Oracle Data客户端。它在寻找Oracle.DataAccess, Version=4.121.1.0,但它不在那里。

第二个错误消息告诉你它现在在那里,但它试图加载一个不同的体系结构(即:你安装了32位,而进程是64位或相反)。

有几个修复:

  1. 安装正确版本的客户端工具,包括正确的'bits'版本。
  2. 设置IIS以另一种位模式运行(如果进程现在是64位,则恢复为32位)。
  3. (首选)使用与体系结构无关的Oracle数据客户端:Oracle Managed.

最新更新