【发布时间】:2017-01-27 17:37:14
【问题描述】:
我有一个 Web 应用程序,其中有一个页面,我每 30 分钟调用一次以激活工作人员。每周大约 5-7 次,我收到 Thread was being aborted 异常
aspx 看起来有点像:
<%@ Page Language="C#" AutoEventWireup="true" %>
<html>
<head runat="server">
<script runat="server">
public void Page_Load(object sender, EventArgs e)
{
System.Threading.Tasks.Task.Factory
.StartNew(() => { new MyApplicationWorker().RunApplicationWorker(); });
}
</script>
</head>
<body></body>
</html>
在 Web.config 中,我有这行来防止超时,我知道工作人员在比这更短的时间内完成。
<httpRuntime enableVersionHeader="false" executionTimeout="300" />
如您所见,页面加载并调用在后台运行的工作人员。没有 Response.End 问题或 Server.Transfer 这是大多数其他处理此问题的帖子所围绕的。我能做些什么来防止异常发生?
【问题讨论】:
-
什么是 IIS 池回收设置?也许整个应用程序正在被回收?
-
也许这可能与stackoverflow.com/questions/7558145/… 相关?其中一个答案引用了 MSDN:
Background threads are not waited-on before application terminating,也许 IIS 只是回收了杀死线程的进程。 -
@PawełŁukasik:该应用程序(目前)托管在共享托管环境中。