我正在使用OdbcDataReader类和ExecuteReader()方法对大型机DB2数据库运行SQL查询。此代码正在生产中,并且已运行良好数月。ThreadAbortException调用OdbcDataReader.ExecuteReader()
查询通常需要1-2分钟才能执行。上个星期五,查询遇到了ThreadAbortException。以下是格式化的堆栈跟踪。跟踪中的ApplicationException在我的catch块中创建。
万一它很重要,查询在客户端调用Web服务方法时运行。 Web服务托管在Windows服务中。 Web服务使用soap.tcp协议托管在Windows服务中。
任何想法为什么TreadAbortException发生?
2个异常的堆栈跟踪。根目录 导致在顶部。
异常2:线程正在中止。
System.Threading.ThreadAbortException 内部 C:\ Windows \组件\ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 \ System.Data.dll中 在 System.Data.Common.UnsafeNativeMethods.SQLExecDirectW(OdbcStatementHandle StatementHandle,串StatementText, 的Int32正文长度)在 System.Data.Odbc.OdbcStatementHandle.ExecuteDirect(串 CommandText中)在 System.Data.Odbc.OdbcCommand.ExecuteReaderObject(的CommandBehavior 行为,串方法,布尔 needReader,对象[] methodArguments , SQL_API odbcApiMethod)at System.Data.Odbc.OdbcCom mand.ExecuteReaderObject(的CommandBehavior 行为,字符串方法,布尔 needReader)在 System.Data.Odbc.OdbcCommand.ExecuteReader(的CommandBehavior 行为)在 MyCompany.MyDatabase.GetFolioList(字符串 sqlWhereClause)异常1:无法检索摘要列表,其中STAT_CD ='V'。
System.ApplicationException内部 d:\生产\ DBGateway \ BIN \ MyDatabase.dll 在 MyCompany.MyDatabase.GetFolioList(字符串 sqlWhereClause)在 MyCompany.MyDatabase。 <> c__DisplayClass18.b__17() 在 MyCompany.WebUtilities.WebServiceBase.WebMethodTemplate [T](字符串 方法名,字符串exceptionFormat, WebMethodWorker1 Worker, StringFormatter
1 FormatterMethod)
感谢您的答复。正如问题所述,该线程正在Windows服务中托管的Web服务中运行。有点奇怪,但确实如此。 – 2008-11-17 21:07:54