IIS 10错误代码0x80070021,提示“不能在此路径中使用此配置节”

在 IIS 10 中出现错误代码0x80070021,提示 “不能在此路径中使用此配置节”,核心原因是 **handlers配置节在父级配置中被锁定 **(默认overrideModeDefault="Deny"),导致子级(如虚拟空间的web.config)无法修改该配置节。

解决思路与步骤

由于虚拟空间通常限制用户修改服务器级配置,需按以下优先级处理:

1. 优先联系虚拟空间提供商(最推荐)

虚拟空间的服务器级配置(如applicationHost.config)由服务商管理,handlers节默认被锁定是为了安全。建议联系服务商,说明需求:

“需要解锁system.webServer/handlers配置节,或帮忙配置对.html.shtml.shtm文件的 SSI 解析支持”

服务商通常可以通过服务器级配置直接开启,无需你修改web.config。

2. 若有权限修改服务器配置(仅适用于自己管理的服务器)

如果是自己的服务器(非虚拟空间),可手动解锁handlers节:

  1. 打开服务器上的applicationHost.config文件(路径:C:WindowsSystem32inetsrvconfigpplicationHost.config,需管理员权限)。
  1. 搜索<sectionGroup name="system.webServer">,找到其中的handlers节配置: 

<section name="handlers" overrideModeDefault="Deny" />

  1. 将overrideModeDefault="Deny"改为overrideModeDefault="Allow",保存文件。
  1. 重启 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配置限制。

本文网址: http://www.gd230.com/a/25.html