Oracle.DataAccess出错

时间:2017-02-10 15:01:54

标签: c# oracle dll data-access

我的服务存在问题。

我有这个错误:

System.IO.FileNotFoundException : Could not load file or assembly 'Oracle.DataAccess, Version=4.112.4.0, Culture=neutral, PublicKeyToken=X' or one of its dependencies.' 

所以我猜我在项目的bin文件夹中添加了dll,没什么,对吧?

然后我遇到了这个错误:

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.

好的,我以前见过这个,只需转到应用程序池并设置"启用32位应用程序"真的....对吗?

OpenDBConnection: Error occurred. System.TypeInitializationException: 
The type initializer for 'Oracle.DataAccess.Client.OracleConnection' threw an exception. 
---> Oracle.DataAccess.Client.OracleException: The provider is not compatible with the version of Oracle client

Okayyy ......没问题,让我查一下:服务器是2008 R2企业版x64。然后我将编译为x64。

Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.

现在,这个烂摊子已经持续了几天。我生气了,因为我明显转过身来但却无法确定退出的位置。

我安装了Oracle 1120_32和1120_64(即11.2.0.2.0版本),安装了.Net 4.0。 我已经尝试过编译到任何cpu"。 我已经尝试将dll属性设置为"特定版本= false","复制Local = true"以及相反的情况。 我已尝试获取旧版本的程序,并在对代码进行必要的更改后重新编译它们,保留旧的配置。 我试过围着仙人掌唱歌跳舞#34;请大比尔,让这个DLL加载"。

我检查了很多链接,但是这发生在远程环境中,因此我没有选择设置断点或其他什么来查看程序尝试加载的内容,并且大多数链接建议(重新)在服务器上安装oracle客户端,但由于我不得不向管理员询问此问题,我宁愿在那里做出确认,最后还有其他事情要尝试。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果应用程序池已启用32位,则oracle客户端和应用程序也需要为32位。

我认为托管的ODAC会不那么痛苦。

如果你想要64位,请确保一切都是64位(应用程序,应用程序池和Odac)

此外,Windows Sysinternals Process Monitor可用于确定应用程序使用的Oracle.DataAccess.dll正在加载哪些非托管dll。