C# 无法加载文件或程序集';Oracle.DataAccess';(x64)
我正在尝试创建一个WCF服务来承载IIS。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.
我的生产和开发服务器是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