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位应用程序.
我该如何解决这个错误?
该错误表明您的系统上未安装Oracle客户端.要验证它,您可以运行以下代码行:
System.Data.Common.DbProviderFactories.GetFactoryClasses()
您将获得所有已安装数据提供程序的DataTable.如果DataTable中未列出Oracle.DataAccess.Client invarient,则表示未安装.
我也在我们的一台客户端机器上面临同样的问题,并且在调试时发现Oracle客户端是从Admin用户安装的,他们试图从其他用户访问它.
从当前用户安装Oracle客户端可以解决问题.
安装Oracle客户端后,请不要忘记重新启动应用程序.
| 归档时间: |
|
| 查看次数: |
12613 次 |
| 最近记录: |