You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 5.0应用随机重启是否与FCN文件变更通知机制有关?

.NET 5 FCN机制说明及随机重启问题处理

.NET 5 保留了和经典ASP.NET类似的文件更改通知(FCN)机制,但实现逻辑与.NET Framework版本存在差异,默认会监控应用根目录及子目录下的所有文件、文件夹变更,符合条件的变更会触发应用重启。

你遇到的现象属于典型的FCN触发场景:如果日志存储目录位于应用工作目录(或站点根目录的子目录)范围内,日志滚动生成、修改、删除文件的操作都会被FCN监听到,当变更次数达到内置阈值后就会触发应用重启,此时仅会输出Application is shutting down..日志,系统事件日志不会留存额外报错信息。

调整FCN行为的配置方式

和经典ASP.NET通过httpRuntime节点配置fcnMode的方式不同,.NET 5 按托管方式不同有两种配置路径:

  • IIS托管场景:在项目的Web.config文件的aspNetCore节点下添加fcnMode属性即可,可选值包括Disabled(完全禁用FCN)、Single(仅监控根目录变更,子目录变更不触发重启)、NotSet(默认值,全目录监控),示例配置如下:
<configuration>
  <system.webServer>
    <aspNetCore processPath="dotnet" arguments=".\你的应用名称.dll" fcnMode="Single" />
  </system.webServer>
</configuration>
  • 自托管(Kestrel直接运行)场景:可以通过两种方式调整:
    • 设置环境变量ASPNETCORE_hostBuilder__reloadConfigOnChange为false,禁用配置文件重载触发的重启
    • 在Program.cs构建WebHost时自定义文件提供器,将日志目录排除在应用监控范围外

最佳实践建议

  • 优先将日志存储目录移出应用站点根目录/工作目录范围,尤其是你使用共享文件夹存储日志的场景,不要将共享文件夹挂载到站点根目录的子目录下,从根源上避免日志滚动变更触发FCN
  • 如果必须将日志放在站点目录内,建议将fcnMode设置为Single,仅监控根目录变更,比完全禁用FCN更安全,不会影响正常的配置文件修改生效逻辑

内容的提问来源于stack exchange,提问作者berlaga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 04:33:03