无法在Oracle中找到请求的.Net Framework数据提供程序

Ran*_*mar 7 odp.net

string constr ="数据源=(DESCRIPTION =(ADDRESS =(PROTOCOL = tcp)(HOST = spp01)(PORT = 1521))(CONNECT_DATA =(SID = Global)));用户

Id = SYSMAN; Password = testman3"; string ProviderName ="Oracle.DataAccess.Client";

        DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);
Run Code Online (Sandbox Code Playgroud)

我能够在控制台和winforms应用程序中连接到oracle.上面的代码位于一个单独的类库中.我安装了64位ODAC.

ORACLE.DATAACCESS设置为2.x ver 2.112.3.0.我检查了machine.config条目Framework64 v2.0.50727和v4.0.30319

类型= "Oracle.DataAccess.Client.OracleClientFactory,Oracle.DataAccess,版本= 2.112.3.0文化=中性公钥= 89b483f429c47342"/>

CPU =任何CPU框架= 3.5

当我从ASP.net中的类库中调用相同的代码时,我得到以下错误

在此输入图像描述 用户代码未处理System.ArgumentException消息=无法找到请求的.Net Framework数据提供程序.它可能没有安装.Source = System.Data StackTrace:at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName)

我甚至设置了apppool以允许32位应用程序.

我该如何解决这个错误?

pre*_*rem 8

该错误表明您的系统上未安装Oracle客户端.要验证它,您可以运行以下代码行:

System.Data.Common.DbProviderFactories.GetFactoryClasses()

您将获得所有已安装数据提供程序的DataTable.如果DataTable中未列出Oracle.DataAccess.Client invarient,则表示未安装.

我也在我们的一台客户端机器上面临同样的问题,并且在调试时发现Oracle客户端是从Admin用户安装的,他们试图从其他用户访问它.

从当前用户安装Oracle客户端可以解决问题.

安装Oracle客户端后,请不要忘记重新启动应用程序.


小智 0

卸载 64 位 ODAC 并安装 32 位 ODAC。