首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ThreadAbortException调用OdbcDataReader.ExecuteReader()

ThreadAbortException调用OdbcDataReader.ExecuteReader()
EN

Stack Overflow用户
提问于 2008-11-17 20:24:52
回答 2查看 2.5K关注 0票数 4

我正在使用DB2类和ExecuteReader()方法对大型机OdbcDataReader数据库运行一个SQL查询。此代码正在制作中,几个月来一直运行良好。

查询通常需要1-2分钟才能执行。上周五,查询遇到了一个ThreadAbortException。下面是格式化的堆栈跟踪。跟踪中的ApplicationException是在catch块中创建的。

如果这很重要,则在客户端调用web服务方法时运行查询。web服务托管在Windows服务中。web服务使用soap.tcp协议托管在Windows中。

知道为什么TreadAbortException会发生吗?

两个异常的

堆栈跟踪。根本原因在顶端。

异常2:线程被中止。

( C:\WINDOWS\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll at System.Threading.ThreadAbortException at System.Data.Common.UnsafeNativeMethods.SQLExecDirectW(OdbcStatementHandle StatementHandle,String StatementText,Int32 TextLength) at System.Data.Odbc.OdbcStatementHandle.ExecuteDirect(String commandText)在System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior行为,String方法,布尔needReader,Object[] methodArguments,( System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior SQL_API odbcApiMethod)在MyCompany.MyDatabase.GetFolioList(String sqlWhereClause) ( String SqlWhereClause)

异常1:无法检索folio摘要列表,其中STAT_CD='V‘。

MyCompany.MyDatabase.<>c__DisplayClass18.b__17() at MyCompany.WebUtilities.WebServiceBase.WebMethodTemplateT的System.ApplicationException at D:\Production\DBGateway\bin\MyDatabase.dll at MyCompany.MyDatabase.GetFolioList(String sqlWhereClause)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-07 21:32:44

这是我自己问题的答案。

当托管web服务时,会有一些进程监视web服务调用所用的时间。如果调用花费的时间太长,那么它将被终止,并将发生ThreadAbortException。超时时间可以增加。

对于运行在ASP.NET之外的ASP.NET web服务(例如,托管为soap.tcp (与as )一样),配置属性为executionTimeoutInSeconds:

代码语言:javascript
复制
<configuration>
  <microsoft.web.services3>
    <messaging>
      <executionTimeoutInSeconds value="360" />
    </messaging>
  </microsoft.web.services3>
</configuration>

对于托管在ASP.NET中的web服务,配置属性为executionTimeout:

代码语言:javascript
复制
<configuration>
<system.web>
            <httpRuntime executionTimeout=”360” />
      </system.web>
</configuration
票数 4
EN

Stack Overflow用户

发布于 2008-11-17 20:45:04

在乐观锁定导致的死锁情况下,您的线程可能被选择为牺牲品,尽管在这种情况下,我希望负责层来处理它。

ThreadAbortExceptions可能是由许多原因引起的,包括其他应用程序或中断线程的CLR主机。您的代码是否由其他应用程序承载?(最初的示例将是Server,但在您的情况下似乎并非如此。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/296781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档