请各位大神帮忙看看这个怎么解决,情况如下:项目部署到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)
Framwork 是4.0
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();
每次有问题就只能手动回收Application Pool
另外,如何确认连接池是否已满?