Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法加载文件或程序集';Oracle.DataAccess';(x64)_C#_Oracle_Visual Studio 2012 - Fatal编程技术网

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

C# 无法加载文件或程序集';Oracle.DataAccess';(x64),c#,oracle,visual-studio-2012,C#,Oracle,Visual Studio 2012,我正在尝试创建一个WCF服务来承载IIS。 我的生产和开发服务器是64位的。 WCF服务需要能够根据客户端请求连接到多个不同的Oracle数据库 我将EntityFramework5与ODAC一起使用,通过DbContext初始化器,我可以选择提供一个要使用的数据库连接 private void ExampleSelect(string dataSource, string user, string password) { var connection = string.

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

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

我将EntityFramework5与ODAC一起使用,通过DbContext初始化器,我可以选择提供一个要使用的数据库连接

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
    }
}
我的问题在于
新的OracleConnection(连接)
。要使用这一行,我需要引用Oracle.DataAccess.dll的x64版本

当我发表文章时,我得到了警告:

错误是:

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

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

我做错了什么

这些解决方案似乎相互关联,但它们都涉及32位Oracle DLL:

为了排除这种情况,我还尝试在开发服务器上安装64位和32位Oracle客户端,但我仍然没有达到发布的程度,因此我不确定服务器是问题的原因


IIS中应用程序池上的
启用32位应用程序
属性没有任何区别,但我还是尝试了它。

要消除问题,必须满足以下条件。因为您希望所有内容都在x64中运行:

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

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

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

4.在IIS池上禁用
启用32位应用程序


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

检查在线服务器的bin目录中是否存在Oracle.DataAccess.dll问题是,如果引用了此dll,我无法发布到服务器。不幸的是,服务器上什么也没有放。据我所知,我已经在做你提到的所有事情了。@philreed我已经做了几百次了。再检查一遍,确认一下!使用
corflags