【问题标题】:Could not load file or assembly 'Oracle.DataAccess' (x64)无法加载文件或程序集“Oracle.DataAccess”(x64)
【发布时间】:2014-03-12 17:22:06
【问题描述】:

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

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

我将 Entity Framework 5 与 ODAC 以及 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)。要使用这一行,我需要引用 x64 版本的 Oracle.DataAccess.dll

当我发布时,我收到警告:

和错误:

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

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

我在这里做错了什么?

这些解决方案似乎是相关的,但它们都引用了 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 属性没有任何区别,但我还是尝试了。

【问题讨论】:

  • 检查在线服务器的bin目录下是否有oracle.dataaccess.dll
  • 重点是如果引用了这个dll,我就无法发布到服务器。所以不幸的是,服务器上没有任何东西。

标签: c# oracle visual-studio-2012


【解决方案1】:

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

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

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

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

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

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

【讨论】:

  • 据我所知,我已经在做你提到的所有事情了。
  • @philreed 我已经做过数百次了。再过一遍并确保!使用corflags
猜你喜欢
  • 2011-03-13
  • 2012-01-29
  • 2013-02-23
  • 1970-01-01
  • 2014-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-29
相关资源
最近更新 更多