1

在我的 IIS 7.5 上,我有一个带有 startMode="AlwaysRunning" 的 AppPool。另外,我将 AppPool 回收设置为 3 分钟进行测试。

当我运行一个长时间运行的任务(10 分钟)时,它会抛出 ThreadAbort。我认为“AlwaysRunning”会解决它。为什么会这样?我还需要改变什么吗?

4

1 回答 1

0

应用程序池回收导致 ThreadAbortException 因为它正在关闭池。无论如何,池进程将被终止并重新启动。池中的代码无法阻止这种情况(ThreadAbortException 的特殊之处在于它可以被捕获但不能被消耗)。

startMode="AlwaysRunning"只是意味着池将始终可用。它没有声明是哪个池进程(因此在池进程终止后,它将自动启动另一个池进程;或者如果重新启动 IIS,它将自动启动 w3wp.exe)。

删除 3 分钟的回收循环时间长度。我看不出它对测试有什么好处(因为只要修改了 ASP.NET 应用程序,IIS 就会重新启动 AppDomain)。

于 2012-09-25T01:46:36.467 回答