加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

为什么工作线程使我的ASP.NET生成器在睡眠期间遇到ThreadAbortEx

发布时间:2020-12-16 04:13:05 所属栏目:asp.Net 来源:网络整理
导读:我在 Windows Server 2008,IIS 7.5上运行的ASP.NET应用程序中生成一个工作线程.这个工作线程做的第一件事就是睡眠N秒,然后它才能真正起作用.在睡眠期间,捕获一个ThreadAbortException. 你能解释一下这种行为,并且你的奖励点指向我可以用来调整行为的任何IIS
我在 Windows Server 2008,IIS 7.5上运行的ASP.NET应用程序中生成一个工作线程.这个工作线程做的第一件事就是睡眠N秒,然后它才能真正起作用.在睡眠期间,捕获一个ThreadAbortException.

你能解释一下这种行为,并且你的奖励点指向我可以用来调整行为的任何IIS / ASP.NET设置.

编辑:更多信息.捕获ThreadAbortException的建议帮助我解决了这个问题,谢谢.根据我学到的东西,我完全重写了这个问题的措辞,但同样的问题,为什么这个工作线程在睡眠中会中止?

解决方法

ThreadAbortException发生在你的工作线程上,因为有人在其上调用了 Thread.Abort,所以它可能与你的工作线程没有直接关系,而是一些外部原因.您应该检查的第一个地方是您自己的代码,您可以执行任何线程管理或中止.否则,对于IIS,这可能是由于工作进程(w3wp.exe)或应用程序池或AppDomain被回收.

回收可能是由于应用程序池的空闲超时设置,定期计划的回收或内存/ CPU使用触发器.这些可通过服务器资源管理器中的IIS配置管理器(在Win 2K8上)或仅运行inetmgr.exe进行配置.根据Tess的博客here,AppDomain回收还有很多其他原因:

  • Machine.Config,Web.Config or Global.asax are modified
  • The bin directory or its contents is modified
  • The number of re-compilations (aspx,ascx or asax) exceeds the limit
    specified by the
    setting in machine.config or
    web.config (by default this is set to
    15)
  • The physical path of the virtual directory is modified
  • The CAS policy is modified
  • The web service is restarted
  • (2.0 only) Application Sub-Directories are deleted

该博客文章还提供了有关追踪回收发生原因的信息.对于初学者,尝试查看事件日志(eventvwr.msc)以查看是否有任何详细信息.

您也可以尝试直接调试工作进程.将VS调试器附加到运行代码的w3wp.exe实例,在Thread.Abort上添加断点(您可能需要在调试器选项中启用“.NET Framework源步进”),并查看Abort源自何处使用调用堆栈窗口.这不会告诉你它为什么会发生,但至少你会知道是谁在做这件事.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读