我正在尝试创建一个在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版本
当我来发表时,我收到警告:
和错误:
我项目的平台目标是“任何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
属性没有任何区别,但无论如何我都试过了。
答案 0 :(得分:0)
要消除您的问题,您必须满足以下条件。因为你希望一切都在x64中运行:
1.确保已安装64位Oracle客户端软件
2.确保您使用的是64位Oracle.DataAccess.dll
(使用corflags
验证)
3.确保使用x64配置构建应用程序
4. IIS池上的禁用Enable 32 bit Application
这是许多人常犯的错误。他们安装32位客户端并尝试运行x64 Oracle.DataAccess