我在下面一段代码中暴出异常
public bool Open()
{
try
{
 if (conn.State == ConnectionState.Closed)
 {
     conn.Open();
 }
 return true;
}
catch (Exception ex)
{
       throw new Exception(ConnectError);
}
}MESSAGE:
句柄无效。 (异常来自 HRESULT:0x80070006 (E_HANDLE))StackTrace:
在System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.OracleClient.OracleConnection.Open()
在 CardServer.DataBase.DB.Open() 位置 ****(省略)****:行号 43Source:mscorlib
当时连接Connection状态:Closed
补充说明:这个异常只是时不时会发生,平均1~2天就会有,而且发生后会接着连续几次连接都失败。我可以保证几点:1,我的数据库操作完后连接肯定有关闭。2,我的连接字符串绝对没问题。3,发生时数据库的最大连接值没有到上限。4,发生时我查了下数据库中上面程序的连接SESSION是只有一条的,为INACTIVE状态。大家帮帮忙,这个问题困扰我一个多月了,之前发了几个贴都没人提到要点。先谢谢大家了~~

解决方案 »

  1.   

    不了解,网上搜了一下,参考http://social.msdn.microsoft.com/Forums/cs-CZ/wcf/thread/4bf86712-ca47-4f43-b5a5-08c75ea271e1http://topic.csdn.net/u/20090826/12/868bcffd-ba6f-4a1c-8d53-478261f882a8.html
      

  2.   

    这些我都看过了,对我没帮助ORACLECLIENT应该是默认用连接池的模式进行连接的,这个句柄无效应该是从连接池中取连接的时候,由于池满了或者其他什么原因,导致没成功,连句柄都没分配可是我连接都有关闭啊
      

  3.   

    别用微软的类库,改用Oracle家的类库即可
      

  4.   

    你指的是ODP.NET?
    可是为什么没见其他人用ORACLECLIENT有这个问题
      

  5.   

    是不是 你的Oracle 的服务自动停呢