Je cours une requête SQL sur une base de données mainframe DB2 en utilisant la classe OdbcDataReader et la méthode ExecuteReader(). Ce code est en production et fonctionne correctement depuis des mois.ThreadAbortException appel OdbcDataReader.ExecuteReader()
La requête prend normalement 1-2 minutes à exécuter. Vendredi dernier, la requête a rencontré une exception ThreadAbortException. Voici la trace de la pile formatée. L'exception ApplicationException dans la trace est créée dans mon bloc catch.
Dans le cas où cela est important, la requête est exécutée lorsqu'un client appelle une méthode de service Web. Le service Web est hébergé dans un service Windows. Le service Web est hébergé dans un service Windows à l'aide du protocole soap.tcp.
Avez-vous des idées sur la raison de l'exception TreadAbortException?
Trace de pile pour 2 exception (s). Racine cause au sommet.
Exception 2: Le fil était en cours d'abandon.
System.Threading.ThreadAbortException intérieur C: \ Windows \ assembly \ GAC_64 \ System.Data \ 2.0.0.0__b77a5c561934e089 \ System.Data.dll à System.Data.Common.UnsafeNativeMethods.SQLExecDirectW (OdbcStatementHandle StatementHandle, chaîne StatementText, Int32 TextLength) à System.Data.Odbc.OdbcStatementHandle.ExecuteDirect (string commandText) à System.Data.Odbc.OdbcCommand.ExecuteReaderObject (comportement CommandBehavior , méthode string, Boolean needReader, objet [] methodArguments , SQL_API odbcApiMethod) à System.Data.Odbc.OdbcCom mand.ExecuteReaderObject (CommandBehavior comportement, méthode String, Boolean needReader) à System.Data.Odbc.OdbcCommand.ExecuteReader (CommandBehavior Comportement ) à MyCompany.MyDatabase.GetFolioList (String SQLWhereClause)Exception 1: Impossible de récupérer la liste récapitulative du folio où STAT_CD = 'V'.
System.ApplicationException intérieur D: \ production \ DBGateway \ bin \ MyDatabase.dll à MyCompany.MyDatabase.GetFolioList (String SQLWhereClause) à MyCompany.MyDatabase. <> c__DisplayClass18.b__17() à MyCompany.WebUtilities.WebServiceBase.WebMethodTemplate [T] (String methodName, String exceptionFormat, WebMethodWorker1 Worker, StringFormatter
1 FormatterMethod)
Merci pour la réponse. Comme mentionné dans la question, le thread est en cours d'exécution dans un service Web hébergé dans un service Windows. Un peu étrange, mais vrai. –