C# 企业图书馆问题

C# 企业图书馆问题,c#,asp.net,.net,enterprise-library,C#,Asp.net,.net,Enterprise Library,我们正在使用Enterprise Library 6.0和以下代码创建数据库实例并执行存储过程?非常感谢您的帮助。提前谢谢 DatabaseProviderFactory factory = new DatabaseProviderFactory(); Database db = factory.CreateDefault(); DbCommand dbCommand = db.GetStoredProcCommand("ProcedureName");

我们正在使用Enterprise Library 6.0和以下代码创建数据库实例并执行存储过程?非常感谢您的帮助。提前谢谢

 DatabaseProviderFactory factory = new DatabaseProviderFactory();
             Database  db = factory.CreateDefault();

 DbCommand dbCommand = db.GetStoredProcCommand("ProcedureName");

                OracleParameter outval = new OracleParameter("Test", OracleDbType.RefCursor);
                outval.Direction = ParameterDirection.Output;
                dbCommand.Parameters.Add(outval);

                using (IDataReader reader = db.ExecuteReader(dbCommand))
                {
                    while (reader.Read())
                    {

                    }
                }

<add name="providerConnString" connectionString="Data Source=ABCD;Password=testuser;User ID=testpwd" providerName="Oracle.DataAccess.Client" />
DatabaseProviderFactory=newdatabaseproviderfactory();
数据库db=factory.CreateDefault();
DbCommand DbCommand=db.GetStoredProcCommand(“ProcedureName”);
OracleParameter outval=新的OracleParameter(“测试”,OracleDbType.RefCursor);
outval.Direction=参数Direction.Output;
dbCommand.Parameters.Add(outval);
使用(IDataReader reader=db.ExecuteReader(dbCommand))
{
while(reader.Read())
{
}
}
我们间歇性地收到以下异常。当我们试图在空闲时间后访问应用程序时,就会发生这种情况。企业库中的连接池是如何发生的?如果应用程序长时间处于空闲状态,它将如何工作?默认最小池大小和默认最大池大小是多少

调用的目标已引发异常。 System.Reflection.TargetInvocationException:已引发异常 通过调用的目标。--> System.TypeInitializationException:的类型初始值设定项 “Oracle.DataAccess.Client.OracleClientFactory”引发异常。 --->System.TypeInitializationException:“Oracle.DataAccess.Client.CThreadPool”的类型初始值设定项引发异常。--> System.Runtime.InteropServices.COMException:检索COM类 具有CLSID的组件的工厂 {CB2F6723-AB3A-11D2-9C40-00C04FA30A3E}由于以下原因失败 错误:800703fa试图对已删除的注册表项执行非法操作 已标记为删除。(HRESULT的例外:0x800703FA)。在 Oracle.DataAccess.Client.CThreadPool..cctor()---内部线程结束 异常堆栈跟踪---在 Oracle.DataAccess.Client.OracleInit.Initialize()---内部 异常堆栈跟踪-----内部异常堆栈跟踪的结束 ---在System.RuntimeFieldHandle.GetValue(RtFieldInfo字段、对象实例、RuntimeType字段类型、RuntimeType declaringType、布尔值& 域名(已初始化)位于 System.Reflection.RtFieldInfo.UnsafeGetValue(对象obj)位于 System.Reflection.RtFieldInfo.InternalGetValue(对象对象obj, 堆栈爬网标记和堆栈标记) System.Reflection.RtFieldInfo.GetValue(对象obj)位于 System.Data.Common.DbProviderFactorys.GetFactory(DataRow providerRow) 在 Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSyntheticConfigSettings.GetDefaultMapping(字符串 dbProviderName)位于 Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSyntheticConfigSettings.GetDatabaseData(ConnectionString设置 连接字符串、数据库设置(数据库设置)位于 Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSyntheticConfigSettings.GetDatabase(字符串 姓名)在 Microsoft.Practices.EnterpriseLibrary.Data.DatabaseProviderFactory.DatabaseConfigurationBuilder.b__2(字符串 n) 在 System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd(TKey
键,Func
2值工厂) Microsoft.Practices.EnterpriseLibrary.Data.DatabaseProviderFactory.DatabaseConfigurationBuilder.CreateDefault()


我与IIS中的应用程序池标识用户有问题。我删除了身份用户并放置了默认身份用户。然后恢复为我的自定义用户标识。这解决了我的问题。

企业库不显式执行任何连接池。连接池将由底层提供者处理(在本例中,我相信是ODP.NET)。这表示使用组策略编辑器将“用户注销时不要强制卸载用户注册表”选项更改为“已启用”。