IIS上运行一段时间后提示:The 'OraOLEDB.Oracle' provider is not registered on the local mach

randolphhuang 2018-10-19 01:56:53

请各位大神帮忙看看这个怎么解决,情况如下:

项目部署到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)
...全文
522 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
randolphhuang 2018-10-23
  • 打赏
  • 举报
回复
自己顶起来!
randolphhuang 2018-10-22
  • 打赏
  • 举报
回复
每次都有调用conn.Dispose() 与 conn.Close() , 应该是关闭了的。 另外,如何确认连接池是否已满?
2018-10-19
  • 打赏
  • 举报
回复
连接池满了吧,每次打开连接都关闭了吗
randolphhuang 2018-10-19
  • 打赏
  • 举报
回复
@版主,请帮忙分析分析呀。 IIS上还有其他Application但是运行正常,就这个有问题。 每次有问题就只能手动回收Application Pool
randolphhuang 2018-10-19
  • 打赏
  • 举报
回复
附上源码: 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();
randolphhuang 2018-10-19
  • 打赏
  • 举报
回复
IIS版本是7, Framwork 是4.0

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧