1

我发现我在IIS下运行的ASP.NET 应用程序时不时会完全重新启动。让应用程序池回收重要吗?

应用程序池回收时究竟发生了什么?

是否保证将调用Application Start 事件,以便我可以重新启动“定时作业”?

回收是否有可能杀死当前的请求或流程并破坏用户体验?如果是,如何处理?

我正在使用IIS 10,默认回收设置为常规时间间隔 1740 分钟(29 小时)。

谢谢!

4

1 回答 1

4

让应用程序池回收重要吗?

是的 - 主要是为了清理任何泄漏的内存或其他资源,但也有其他好处。

是否保证将调用 Application Start 事件,以便我可以重新启动“定时作业”?

否 -发出请求Application Start时发生。

IIS 不是调用计划作业的正确平台。请改用 Windows 服务或任务计划程序。

回收是否有可能杀死当前的请求或流程并破坏用户体验?如果是,如何处理?

如果您严重依赖基于内存的会话,那么是的,这是可能的。现有请求将有合理的机会完成,因此如果存在长时间运行的请求,则它们可能会被终止。如果您使用的是内存会话,会话肯定会被清除。解决此问题的最佳方法是更改​​为更持久的会话,例如数据库持久会话。

底线 - 如果计划任务是您的主要关注点,那么请使用与 IIS 不同的平台。IIS 被设计为一个请求/响应平台。

于 2016-03-29T02:00:10.030 回答