IIS 10.0 No managed code模式下app_offline.htm不生效问题咨询
问题产生原因
app_offline.htm的自动离线拦截逻辑,并不是IIS 10原生核心模块提供的功能,这个特性从ASP.NET 2.0版本开始由.NET托管运行时内置的托管模块实现:
- 当应用池CLR版本配置为v4.0时,IIS会为工作进程加载对应版本的.NET CLR,ASP.NET托管模块会在请求管线的最早期阶段检测站点根目录是否存在
app_offline.htm。一旦检测到文件存在,模块会直接返回该文件的内容响应所有请求,同时卸载站点对应的应用程序域,暂停托管代码的执行,因此离线功能可以正常生效。 - 当应用池CLR版本切换为
No managed code模式时,IIS工作进程不会加载任何版本的.NET CLR,负责检测app_offline.htm的托管模块完全不会参与请求处理流程,自然不会触发对应的离线响应逻辑,文件也就无法生效。
无托管代码场景下的替代实现方案:如果需要在
No managed code模式下实现相同的离线提示效果,可以直接使用IIS原生功能配置:将app_offline.htm设置为优先级最高的默认文档,或者配置IIS原生URL重写规则,将所有入站请求临时指向该离线文件即可,不需要依赖托管模块的检测逻辑。
内容的提问来源于stack exchange,提问作者yuvaraj
相关产品推荐
相关产品推荐

