【发布时间】:2010-05-18 20:46:00
【问题描述】:
我有一个 Web 服务,它创建一个线程来在后台处理一些数据。我在其中一个线程被杀死的日志中看到了“System.Threading.ThreadAbortException:线程被中止”消息。我目前的假设是只要执行它正在处理的任务,线程就会运行,但是在谷歌搜索异常之后,我看到有几篇文章提到在网络中增加应用程序的 ExecutionTimeOut 属性。配置文件。我的问题是:
在 ASP.NET 中执行的线程的最大执行时间是多少?此超时是无限制的还是仍受应用程序的 ExecutionTimeOut 属性约束?
【问题讨论】:
-
另一个需要注意的潜在问题是:响应完成后会发生什么?整个过程会被抛出吗?是否清理资源(例如生成的线程)。如果是这样,您将需要以其他方式启动线程,然后与它交流工作。
-
@TheJacobTaylor 不,这是个好主意,但是在请求完成处理后线程可以继续执行。
-
哦,我们已经遇到过这个问题了,诀窍是确保您的新线程没有在处理由 Web 服务返回的引用,否则该引用将在 GC 期间被销毁
-
我找到了我的线程被杀死的原因。如果您更改 web.config 文件,应用程序将重新启动,从而杀死与其关联的线程。
-
@MrGumbe 谢谢,我不确定 .NET 是否有一个 fastCGI 模式可以自动清理内容,或者这可能是一个配置选项。
标签: asp.net multithreading executiontimeout