【发布时间】:2020-12-04 14:56:20
【问题描述】:
是否在 IIS 池回收时执行类终结器,或者在池 STOP 期间执行此操作。从理论上讲,这应该类似于Application.Run/Stop,但是是吗?
在相同的上下文中,我相信,如果应用程序是 NET CORE,并且它在 Kestrel 或 IIS 中运行控制台应用程序,那么关闭控制台应用程序将运行终结器。还是这样?
【问题讨论】:
-
终结器在垃圾回收时运行。即使您在进程终止之前收集了垃圾(这是不正常的),这并不意味着所有东西都被收集了。你想做什么?如果您试图检测关闭以进行必要的处理,那么:不要通过终结器来执行此操作。事实上,终结器非常很少见,您可能不应该使用它们。
-
@MarcGravell 我记得,如果你正常关闭 Windows 应用程序,终结器就会运行。看起来在那段时间里有最后一个 GS 在运行。是的。所以,基本上,需要释放一些远程资源。
-
那么 IMO 你问错了问题;真正的问题是“如何检测 asp.net 关闭”(也许分别在 IIS 和 Kestrel 的上下文中)。我现在面前没有电脑,因为我们一直这样做
-
@MarcGravell 也许......但在我看来,这仍然是一个有趣的问题。要知道的事情。
标签: asp.net .net asp.net-core iis .net-core