【发布时间】: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