企业库问题

时间:2014-11-19 18:57:52

标签: c# asp.net .net enterprise-library

我们正在使用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" />

我们间歇性地收到以下异常。当我们在空闲时间之后尝试访问应用程序时会发生这种情况。连接池如何在企业库中发生?如果应用程序长时间处于空闲状态,它将如何工作?什么是默认的最小池大小和默认的最大池大小?

  

调用目标抛出了异常。   System.Reflection.TargetInvocationException:抛出了异常   通过调用的目标。 ---&GT;   System.TypeInitializationException:类型初始值设定项   &#39; Oracle.DataAccess.Client.OracleClientFactory&#39;抛出一个例外。   ---&GT; System.TypeInitializationException:&#39; Oracle.DataAccess.Client.CThreadPool&#39;的类型初始值设定项。抛出一个例外。 ---&GT;   System.Runtime.InteropServices.COMException:检索COM类   带有CLSID的组件的工厂   {CB2F6723-AB3A-11D2-9C40-00C04FA30A3E}由于以下原因而失败   错误:800703fa对具有的注册表项进行了非法操作   被标记为删除。 (来自HRESULT的异常:0x800703FA)。在   Oracle.DataAccess.Client.CThreadPool..cctor()---内部结束   异常堆栈跟踪--- at   Oracle.DataAccess.Client.OracleInit.Initialize()---内部结束   异常堆栈跟踪--- ---内部异常堆栈跟踪结束   ---在System.RuntimeFieldHandle.GetValue(RtFieldInfo字段,Object实例,RuntimeType fieldType,RuntimeType declaringType,Boolean&amp;   domainInitialized)at   System.Reflection.RtFieldInfo.UnsafeGetValue(Object obj)at   System.Reflection.RtFieldInfo.InternalGetValue(Object obj,   StackCrawlMark&安培; stackMark)at   System.Reflection.RtFieldInfo.GetValue(Object obj)at   System.Data.Common.DbProviderFactories.GetFactory(DataRow providerRow)   在   Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSyntheticConfigSettings.GetDefaultMapping(字符串   dbProviderName)at   Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSyntheticConfigSettings.GetDatabaseData(ConnectionStringSettings   connectionString,DatabaseSettings databaseSettings)at   Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSyntheticConfigSettings.GetDatabase(字符串   姓名)at   Microsoft.Practices.EnterpriseLibrary.Data.DatabaseProviderFactory.DatabaseConfigurationBuilder.b__2(字符串   n)at   System.Collections.Concurrent.ConcurrentDictionary 2.GetOrAdd(TKey key, Func 2 valueFactory)at   Microsoft.Practices.EnterpriseLibrary.Data.DatabaseProviderFactory.DatabaseConfigurationBuilder.CreateDefault()

1 个答案:

答案 0 :(得分:0)

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