无法加载文件或程序集'Oracle.DataAccess'(x64)

时间:2014-02-13 17:11:09

标签: c# oracle visual-studio-2012

我正在尝试创建一个在IIS中托管的WCF服务 我的生产和开发服务器是64位。

WCF服务需要能够根据客户端请求连接到多个不同的Oracle数据库。

我正在使用带有ODAC的Entity Framework 5,并且使用DbContext Initialiser,我可以选择提供要使用的数据库连接。

private void ExampleSelect(string dataSource, string user, string password)
{
    var connection =
        string.Format("DATA SOURCE={0};PASSWORD={1};USER ID={2}",
                          dataSource, password, user);

    using (var context = new OracleDbContext(new OracleConnection(connection)))
    {
        // do stuff here
    }
}

我遇到的问题在于new OracleConnection(connection)。要使用此行,我需要引用Oracle.DataAccess.dll的x64版本

当我来发表时,我收到警告:

  

warning

和错误:

  

error

我项目的平台目标是“任何CPU”。如果我将其更改为目标x64,我会得到相同的错误,但这次它指的是我的项目而不是Oracle.DataAccess

  

error2

以上任何一个在我的开发机器上成功构建,我只在发布时才会收到错误。

我在这里做错了什么?

这些解决方案似乎是相关的,但它们都是指32位Oracle Dll:

Could not load file or assembly Oracle.DataAccess

Could not load file or assembly 'Oracle.DataAccess' 64 bit ODP.NET

Could not load file or assembly 'Oracle.DataAccess error

为了排除它,我还尝试在开发服务器上安装64位和32位Oracle客户端,但我仍然没有达到甚至发布所以我不确定服务器是什么原因问题。

IIS中应用程序池上的Enable 32 bit Application属性没有任何区别,但无论如何我都试过了。

1 个答案:

答案 0 :(得分:0)

要消除您的问题,您必须满足以下条件。因为你希望一切都在x64中运行:

1.确保已安装64位Oracle客户端软件

2.确保您使用的是64位Oracle.DataAccess.dll(使用corflags验证)

3.确保使用x64配置构建应用程序

4. IIS池上的禁用Enable 32 bit Application

这是许多人常犯的错误。他们安装32位客户端并尝试运行x64 Oracle.DataAccess