IIS 10站点删除物理路径文件夹后自动重启如何配置避免?
避免删除静态资源文件夹触发ASP.NET站点重启的解决方案
触发该重启是ASP.NET文件变更通知(FCN)的默认机制行为:站点根目录下的子目录被删除/重命名时,会被判定为关键目录变更,触发AppDomain卸载重启。你可以根据自身场景选择以下解决方案:
方案1:将静态资源文件夹配置为IIS虚拟目录(最推荐,无额外副作用)
- 把存放css、js的静态资源文件夹从站点物理根目录下移出,放到服务器其他独立路径
- 打开IIS管理器,找到对应站点,右键选择「添加虚拟目录」
- 别名设置为你原静态文件夹的访问名称(比如
assets),物理路径指向你刚移出的静态资源路径 - 调整你的静态资源生成逻辑,直接更新该外部路径下的文件即可,不需要再操作站点根目录下的文件夹,完全不会触发站点根目录的变更监控,自然不会引发重启。该方案下web.config、业务代码文件的变更仍可正常触发自动重启,不影响常规部署流程。
方案2:调整静态资源更新逻辑,不操作文件夹本身
现有报错的核心触发原因是你删除了根目录下的子文件夹,触发了目录级别的变更通知。你可以调整更新逻辑:
- 保留原静态资源文件夹不删除
- 只遍历删除文件夹内部的旧css、js文件
- 再写入新版的静态资源文件
仅修改文件夹内部文件不会触发目录级别的变更通知,不会导致站点重启,改造成本最低。
方案3:完全禁用文件变更通知(不推荐,有副作用)
如果以上两个方案都不适用,你可以将fcnMode设置为Disabled完全禁用FCN机制:
<httpRuntime executionTimeout="180" targetFramework="4.7.2" requestValidationMode="2.0" maxRequestLength="104857600" fcnMode="Disabled"/>
注意:该配置生效后,所有站点文件(包括web.config、aspx、cshtml、业务代码文件)的变更都不会自动触发站点重启,每次部署更新后需要手动回收应用池才能让变更生效。
内容的提问来源于stack exchange,提问作者BASKA
相关产品推荐
相关产品推荐

