2010-08-16 71 views
1

我收到以下例外情況。有兩個表中的記錄和HasRows =真從adsDataReader中獲得例外

Advantage.Data.Provider.AdsException was unhandled by user code 
    Message="Error 5018: The handle given was not recognized by Advantage. Verify specified handle is open/active. The given handle is not recognized as a valid Advantage Client Engine handle." 
    Source="Advantage.Data.Provider" 
    Number=5018 
    State="" 
    StackTrace: 
     at Advantage.Data.Provider.AdsException.CheckACE(UInt32 ulRet) 
     at Advantage.Data.Provider.AdsDataReader.GetName(Int32 iCol) 
     at Ceridian.Benefits.AdvantageDbAdapter.Utilities.SelectBodyWriter.OnWriteBodyContents(XmlDictionaryWriter writer) 
     at System.ServiceModel.Channels.BodyWriter.WriteBodyContents(XmlDictionaryWriter writer) 
     at System.ServiceModel.Channels.BodyWriterMessage.OnWriteBodyContents(XmlDictionaryWriter writer) 
     at System.ServiceModel.Channels.Message.WriteBodyContents(XmlDictionaryWriter writer) 
     at Ceridian.Benefits.AdvantageDbAdapter.Utilities.AdapterMessage.OnWriteBodyContents(XmlDictionaryWriter writer) 
     at System.ServiceModel.Channels.Message.OnGetReaderAtBodyContents() 
     at Ceridian.Benefits.AdvantageDbAdapter.Utilities.AdapterMessage.OnGetReaderAtBodyContents() 
     at System.ServiceModel.Channels.Message.GetReaderAtBodyContents() 
     at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest) 
     at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeReply(Message message, Object[] parameters) 
     at System.ServiceModel.Dispatcher.ProxyOperationRuntime.AfterReply(ProxyRpc& rpc) 
     at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc) 
     at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) 
     at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs) 
     at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) 
     at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) 
    InnerException: 

回答

2

我通常都看到了這一點,當基礎連接已經得到讀者和用該閱讀器之間籠罩。如果您正在使用全局連接,請檢查它是否在先前的某個位置沒有關閉。

例如,由於連接已關閉,以下代碼塊將在「讀取」中收到5018錯誤。

 AdsConnection cn = new AdsConnection("data source=c:\\"); 
     cn.Open(); 
     AdsCommand cmd = cn.CreateCommand(); 
     cmd.CommandText = "EXECUTE PROCEDURE sp_mgGetInstallInfo()"; 
     AdsDataReader dr = cmd.ExecuteReader(); 
     cn.Close(); 
     dr.Read(); 

如果您移動cn.Close();在閱讀之後,你不應該得到錯誤。