请各位大神帮忙看看这个怎么解决,情况如下:项目部署到IIS运行OK,可是一段时间后就出现连接不了数据库,报错信息如下。
在IIS内点击回收或者重启IIS应用程序池就恢复正常,可是一段时间后又出现同样的错误。
System.InvalidOperationException: The 'OraOLEDB.Oracle' provider is not registered on the local machine.
   at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)
   at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.OleDb.OleDbConnection.Open()
   at Inflor.Infra.Persistence.DataAccessControllerInternal.get_Connection()
   at Inflor.Infra.Persistence.DataAccessControllerInternal.PrepareCommand(OleDbCommand command)
   at Inflor.Infra.Persistence.DataAccessControllerInternal.FillDataTable(OleDbCommand command, String[] fieldsToTranslate)
   at Inflor.Infra.Persistence.DataAccessControllerInternal.Fill(OleDbCommand command, String[] fieldsToTranslate)
   at Inflor.Infra.Persistence.DataAccessControllerInternal.Fill(String query, String[] fieldsToTranslate)
   at Inflor.Infra.Persistence.DataAccessControllerInternal.Fill(String query)
   at Inflor.Infra.Persistence.DataAccessController.Fill(String query)
   at Seg.Service.NivelAcessoPagina(String pagina_path, String usuario)
   at SGF.Global.Application_AuthenticateRequest(Object sender, EventArgs e)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

解决方案 »

  1.   

    IIS版本是7,
    Framwork 是4.0
      

  2.   

    附上源码:
    string connString = "Provider=OraOLEDB.Oracle;User ID=xxx;Password=xxxxData Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = XXXXX)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = MyDB)))";
    OleDbConnection conn = new OleDbConnection(connString);
    OleDbCommand cmd = conn.CreateCommand();
    cmd.CommandText = sql;
    conn.Open();
      

  3.   

    @版主,请帮忙分析分析呀。IIS上还有其他Application但是运行正常,就这个有问题。
    每次有问题就只能手动回收Application Pool
      

  4.   

    每次都有调用conn.Dispose() 与 conn.Close() , 应该是关闭了的。
    另外,如何确认连接池是否已满?