IIS进程内托管模式下如何获取ASP.NET Core应用的关闭原因
IIS进程内托管模式下获取ASP.NET Core应用关闭原因的方案
ASP.NET Core框架本身没有提供跨托管场景通用的关闭原因获取API,针对IIS进程内托管场景,可通过以下两种方式获取具体关闭原因:
- 查看Windows系统事件日志:IIS的应用池回收、进程关闭等操作都会由Windows进程激活服务(WAS)生成对应事件日志,打开事件查看器 > Windows日志 > 系统,筛选来源为「WAS」的事件即可看到明确的关闭触发原因,常见原因包括配置修改、手动回收、CPU/内存阈值触发、请求队列溢出等。如果是应用运行时异常触发的进程退出,还可以同步查看应用程序日志分类下来源为「.NET Runtime」或「IIS AspNetCore Module V2」的事件获取细节。
- 自定义注册ANCM回调钩子:IIS进程内托管依赖ASP.NET Core Module(ANCM)实现承载,你可以通过调用Windows原生API注册ANCM的进程关闭回调,直接从IIS侧获取关闭原因参数,该方案实现精度最高,但需要编写非托管交互代码,没有官方托管封装,适合有定制开发能力的场景。
此前.NET Framework时代的
HostingEnvironment.ShutdownReason仅适用于IIS托管场景,ASP.NET Core因为支持多环境托管,不同托管平台的关闭触发逻辑差异极大,无法抽象出通用的关闭原因枚举,因此官方没有提供对应统一托管API。
内容的提问来源于stack exchange,提问作者moccajoghurt
相关产品推荐
相关产品推荐

