在IIS 7及更高版本的服务器架构中,Web.config文件里的system.webServer配置节是专门用于配置IIS核心功能的关键XML节点,它替代了IIS 6及之前版本的元数据库配置方式,所有和IIS处理请求相关的规则都可以在该节点下定义。

system.webServer配置节的基本结构
system.webServer是configuration根节点下的直接子节点,基本结构如下:
<configuration>
<system.webServer>
<!-- 各个子配置节点 -->
</system.webServer>
</configuration>
常用子配置节点说明
handlers 处理程序映射配置
handlers节点用于定义不同请求路径和扩展名对应的处理程序,比如指定.aspx文件由ASP.NET引擎处理,静态文件由IIS直接返回。以下是一个常见的处理程序配置示例:
<handlers>
<!-- 移除默认的处理程序,避免冲突 -->
<remove name="WebServiceHandlerFactory-Integrated" />
<!-- 添加ASP.NET页面处理程序 -->
<add name="PageHandlerFactory"
path="*.aspx"
verb="GET,HEAD,POST,DEBUG"
type="System.Web.UI.PageHandlerFactory"
preCondition="integratedMode" />
<!-- 静态文件处理,优先使用IIS原生处理 -->
<add name="StaticFile"
path="*"
verb="*"
modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule"
resourceType="Either"
requireAccess="Read" />
</handlers>
modules 模块配置
modules节点用于加载IIS处理请求过程中需要用到的模块,比如表单验证模块、会话状态模块等。配置示例如下:
<modules>
<!-- 移除不需要的默认模块 -->
<remove name="FormsAuthentication" />
<!-- 添加自定义模块 -->
<add name="CustomModule"
type="MyApp.CustomHttpModule" />
</modules>
httpErrors 自定义错误页配置
当网站出现404、500等状态码时,可以通过httpErrors节点配置自定义的错误页面,替代IIS默认的错误页。示例如下:
<httpErrors errorMode="Custom" existingResponse="Replace"> <remove statusCode="404" /> <error statusCode="404" path="/ErrorPages/404.html" responseMode="File" /> <remove statusCode="500" /> <error statusCode="500" path="/ErrorPages/500.html" responseMode="File" /> </httpErrors>
rewrite URL重写配置
如果需要实现URL重写功能,比如将动态地址转换为伪静态地址,可以在system.webServer下添加rewrite节点,前提是服务器已经安装了URL重写模块。示例如下:
<rewrite>
<rules>
<rule name="Rewrite to article page">
<match url="^article/([0-9]+).html$" />
<action type="Rewrite" url="article.aspx?id={R:1}" />
</rule>
</rules>
</rewrite>
配置注意事项
- 所有配置标签和属性名都区分大小写,必须严格按照XML规范编写,否则会导致配置加载失败。
- 如果同一个配置项在父目录和子目录的Web.config中都存在,子目录的配置会覆盖父目录的配置。
- 修改配置后不需要重启IIS,IIS会自动检测配置文件的变更并应用新规则。
- 如果配置错误导致网站无法访问,可以先将system.webServer节点下的内容注释掉,逐步排查问题。
常见配置问题排查
如果遇到HTTP 500.19错误,通常是配置文件存在语法错误,或者配置的规则和服务器已安装的功能冲突。可以检查XML格式是否正确,是否有重复的处理程序名称,或者是否引用了未安装的模块。如果是处理程序冲突,可以通过<remove name="处理程序名称" />先移除默认的处理程序再添加自定义规则。
system.webServerIIS_7+Web.configXML配置修改时间:2026-06-10 20:18:18