在 IIS 10 中出现错误代码0x80070021,提示 “不能在此路径中使用此配置节”,核心原因是 **handlers配置节在父级配置中被锁定 **(默认overrideModeDefault="Deny"),导致子级(如虚拟空间的web.config)无法修改该配置节。
解决思路与步骤
由于虚拟空间通常限制用户修改服务器级配置,需按以下优先级处理:
1. 优先联系虚拟空间提供商(最推荐)
虚拟空间的服务器级配置(如applicationHost.config)由服务商管理,handlers节默认被锁定是为了安全。建议联系服务商,说明需求:
“需要解锁system.webServer/handlers配置节,或帮忙配置对.html、.shtml、.shtm文件的 SSI 解析支持”。
服务商通常可以通过服务器级配置直接开启,无需你修改web.config。
2. 若有权限修改服务器配置(仅适用于自己管理的服务器)
如果是自己的服务器(非虚拟空间),可手动解锁handlers节:
- 打开服务器上的applicationHost.config文件(路径:C:WindowsSystem32inetsrvconfigpplicationHost.config,需管理员权限)。
- 搜索<sectionGroup name="system.webServer">,找到其中的handlers节配置:
<section name="handlers" overrideModeDefault="Deny" />
- 将overrideModeDefault="Deny"改为overrideModeDefault="Allow",保存文件。
- 重启 IIS(命令行执行iisreset),再部署你的web.config即可生效。
3. 替代方案:避免修改handlers节(适用于虚拟空间限制)
如果服务商无法解锁,可放弃在web.config中配置handlers,改用 IIS 默认支持的 SSI 扩展名:
- 仅使用.shtml或.shtm扩展名(IIS 默认对这两个扩展名的 SSI 支持可能已开启),删除web.config中关于.html的handlers配置,保留.shtml/.shtm的mimeMap和serverSideInclude配置。
- 将所有.html文件重命名为.shtml,并在页面中使用 SSI 指令(如<!--#include file="header.html" -->)。
总结
虚拟空间的核心限制是无法修改服务器级锁定的配置节,联系服务商协助配置是最直接的解决方式。若无法协调,可通过改用.shtml扩展名绕过handlers配置限制。