c# - 如何处理IIS回收

标签 c# asp.net .net iis iis-10

<分区>

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

应用程序池回收时到底发生了什么?

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

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

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

谢谢!

最佳答案

Is it important to let the application pool recycle?

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

Is it guaranteed that Application Start event will be invoked, so I can restart my "timed jobs"?

否 - 应用程序启动在发出请求时发生。

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

Is it possible that the recycling is killing a current request or flow and ruining user experience? If yes, how to handle that?

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

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

关于c# - 如何处理IIS回收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274021/

相关文章:

c# - Azure AppService 将Word转换为PDF

c# - 将按钮绑定(bind)到 GridView

javascript insideHTML 无法在 ASP.NET Web 表单中工作

.net - 查找两个日期间隔之间的每个星期六和星期日 (.NET)

c# - PowerShell 是否编译脚本?

c# - 在循环内使用 .Where().FirstOrDefault() 时,ASP MVC 中的名称不唯一

c# - 带有布局引擎的自定义面板

.Net WinForms TabControl 窃取关注表单激活

c# - DateTime 格式注释不适用于 Visual Studio 中的 Vue 应用程序

c# - xUnit - 显示理论成员数据的测试名称 (TestCase)