我使用的是 Windows 2012、.net 4.5。我有一个 Web 应用程序,它偶尔会进行繁重的处理,并使服务器停机一段时间(约 8-10 分钟)。
我随机发现 WAS 正在终止工作进程,因为它无法及时响应其 ping。
因此我将应用程序池的 pingEnabled 属性设置为 false,因为我认为 WAS 不会 ping 工作进程,因此不会终止它。
但我发现它仍在终止工作进程并将其标记为不健康。有没有办法可以将其配置为不 ping 它,我试图避免 ping 超时等随机增加
答案1
您可以尝试使用新的 QueueBackgroundWorkItem 方法。
这是为了处理从 ASP.net 内部产生的长时间运行的作业而创建的。
QBWI 安排一个可以在后台运行的任务,不受任何请求的影响。这与普通的 ThreadPool 工作项不同,因为 ASP.NET 会自动跟踪当前正在运行通过此 API 注册的工作项数量,并且 ASP.NET 运行时将尝试延迟 AppDomain 关闭,直到这些工作项执行完毕。
我相信这需要 asp.net 4.5.2,所以您可能需要升级才能获得此功能。