2

次の例外が発生しています。テーブルには 2 つのレコードがあり、HasRows = true

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: 
4

1 に答える 1

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(); を移動すると 読み取り後にエラーが発生しないようにします。

于 2010-08-16T20:34:44.363 に答える