Oracle.DataAccess.dll没有使用C#加载

时间:2011-04-09 21:48:17

标签: c#

我在加载oracle.dataaccess时遇到问题。这是我得到的信息:

  

无法加载文件或程序集'Oracle.DataAccess,Version = 2.112.1.0,Culture = neutral,PublicKeyToken = 89b483f429c47342'或其依赖项之一。试图加载格式不正确的程序。

我的web.config中有以下条目。

<add assembly="Oracle.DataAccess, Version=2.112.1.0, Culture=neutral,
  PublicKeyToken=89b483f429c47342"/>

在议会下

<dependentAssembly>
  <assemblyIdentity name="Oracle.DataAccess" publicKeyToken="89b483f429c47342"
    Culture="neutral" />
  <BindingRedirect oldVersion = "2.112.1.2" newVersion = "2.112.1.0" />
</dependentAssembly>**

我正在使用Windows Vista计算机上的Visual Studio 2008进行开发。我为32位应用程序启用了IIS 7.0应用程序池,此项目的平台目标是x86而不是“任何CPU”。

我仍在试图弄清楚在这种情况下到底出了什么问题。

6 个答案:

答案 0 :(得分:3)

似乎问题是您安装了64位客户端,Visual Studio无法识别它,因为它是一个32位应用程序。不幸的是,我发现最好的解决方案是在同一台机器上安装32位和64位客户端。我在 C:\ Oracle \ 11gClient32 中安装一个,在 C:\ Oracle \ 11gClient64 中安装另一个。您应首先安装32位版本,然后安装64位版本。

请记住,您需要在 [oracle] \ network \ admin 文件夹中维护两个sqlnet.ora和tnsnames.ora(或ldap.ora)副本。

答案 1 :(得分:1)

Oracle.DataAccess程序集存在于32位和64位版本中。检查项目引用的程序集的位数,对于32位(x86)应用程序,它必须是32位。

答案 2 :(得分:1)

确保将Oracle客户端软件安装到计算机上。简单地引用Oracle.DataAccess并不是开箱即用的。 ODAC

答案 3 :(得分:0)

你确定你已经添加了组件吗?还...确定令牌?最后......确定上面建议的32/64兼容性?

答案 4 :(得分:0)

我也有类似的问题,我收到了以下错误:

Unhandled exception: System.BadImageFormatException: Could not load file or 
assembly 'Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, 
PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was 
made to load a program with an incorrect format.

它在我的本地系统中正常工作,我安装了32位和64位版本的dll。但在服务器中,只安装了64位版本,我不允许进行任何安装。

所以遵循以下步骤:

1)The project reference pointed to OracleDataAccess.dll , version 64 bit.
2)In the project properties -> Build -> Platform target : x64. So when you 
select x64, Prefer 32-bit option would be unchecked automatically. Then I 
did re-build of the project and deployed. 

最后我可以成功连接到oracle数据库。

答案 5 :(得分:-2)

如果是64位问题,您可以尝试将目标CPU更改为x86(项目属性 - 编译选项卡 - 高级编译选项 - 目标CPU)并重新编译。
这对我有用。