如何在64位O/S上使用ASP.NET中的非托管ODP.NET(64位)?

Zes*_*sty 6 .net c# asp.net iis odp.net

我必须得到一个使用unmanaged ODP.NET64-bit机器上工作的遗留应用程序.

  1. 我安装了 64-bit unmanaged ODP.NET
  2. 我已经通过64-bit unmanaged ODP.NET在控制台应用程序中测试它来验证它是否正常工作
  3. 我创建了一个测试Web应用程序,它具有与工作控制台应用程序相同的数据访问代码,以及对控制台应用程序使用的同一Oracle.Data.AccessDLL 的引用GAC.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
Run Code Online (Sandbox Code Playgroud)

应用程序正在运行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)工作中ASP.NET64-bitO/S?

注意:这个问题看起来有点类似于其他问题,但它并不是我所知道的

注2:是的,我知道推荐的方法是使用managed ODP.NET,但我没有源代码,因此无法进行更改.

Sub*_*bbu 0

我尝试了一个简单的应用程序,它按我的预期工作。我的设置 Win 8.1,IIS

连接到 Oracle 后进程加载的 DLL 的屏幕截图

在此输入图像描述

    using (OracleConnection conn = new OracleConnection(connectionString))
    {
        conn.Open();
            
    }
Run Code Online (Sandbox Code Playgroud)

基于ODP.Net文档

Oracle Data Provider for .NET、非托管驱动程序集

Oracle.DataAccess.Client 命名空间包含客户端提供程序的 ODP.NET 类和枚举。

我添加了对 Oracle.DataAccess.dll 的引用。这是我的项目中唯一的 Oracle DLL 参考。

在我的机器中,DLL 位于以下位置

\product\12.2.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll

我使用Oracle 站点上的这个版本来安装 ODP.Net

在此输入图像描述

安装的时候我特意选择了

(1) 不要更改 machine.config

(2) 不要在GAC中安装任何东西

所以,要尝试的事情:

(1) 从Oracle文件夹引用程序集(而不是GAC)

(2)安装最新可用的ODP.Net

祝你好运