我必须得到一个使用unmanaged ODP.NET
64-bit
计算机的遗留应用程序。
64-bit
unmanaged ODP.NET
64-bit
unmanaged ODP.NET
正常工作Oracle.Data.Access
中相同GAC
DLL的引用。 Web应用程序无法连接到数据库。代码片段不相关,因为代码有效并且非常简单(参见第2点。)。在conn.Open();
Exception.Message
为空。
Exception.StackTrace
无效:
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode,
OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object
src, String procedure, Boolean bCheck, Int32 isRecoverable) at
Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode,
OracleConnection conn, IntPtr opsErrCtx, Object src) at
Oracle.DataAccess.Client.OracleConnection.Open() at
TestODPNet.ODPNetTester.Test() in
D:\Projects\TestODPNet\TestODPNet\ODPNetTester.cs:line 27
该应用程序正在Local IIS
上运行,而不是IIS Express
。
在IIS
中,“Enable 32-bit applications
”设置为false
。
该应用程序的目标是x64-bit
平台,而不是Any CPU
。
在本地,我正在使用64-bit Windows 10
,而在服务器上,我正在使用64-bit Windows Server 2012
。我无法让任何非托管ODP.NET
工作。所以,从32-bit
开始,我认为这与ODP.NET
二进制文件无关,而且两个操作系统都是64-bit
。
编辑:应用程序池(暂时用于测试)使用与控制台应用程序相同的帐户运行,控制台应用程序是计算机上的管理员。
我错过了什么?如何在unmanaged ODP.NET (64-bit)
O / S上ASP.NET
64-bit
工作?
注意:这个问题看起来与其他问题有点相似,但它并不是我所知道的
注意2:是的,我知道推荐的方法是使用managed ODP.NET
,但我没有源代码,因此无法进行更改。
答案 0 :(得分:0)
我尝试了一个简单的应用程序,它对我来说是预期的。我的设置Win 8.1,IIS
连接到Oracle
后进程加载的DLL的屏幕截图 using (OracleConnection conn = new OracleConnection(connectionString))
{
conn.Open();
}
基于ODP.Net文档
适用于.NET的Oracle数据提供程序,非托管驱动程序程序集
Oracle.DataAccess.Client命名空间包含客户端提供程序的ODP.NET类和枚举。
我添加了对Oracle.DataAccess.dll的引用。这是我项目中唯一的Oracle DLL引用。
在我的机器中,DLL位于以下位置
\产品\ 12.2.0 \的Client_1 \ odp.net \ BIN \ 4 \ Oracle.DataAccess.dll
我使用Oracle网站的this版本来安装ODP.Net
在安装过程中,我特意选择了
(1)不要改变machine.config
(2)不在GAC中安装任何东西
所以,要尝试的事情:
(1)从Oracle文件夹(而不是GAC)引用程序集
(2)安装最新的ODP.Net
祝你好运