Web.config 必须位于应用根目录才能生效,子目录可放独立文件但仅影响自身及子目录;.NET Core/5+ 中仅 IIS 集成场景下保留用于 aspNetCore 模块配置。

Web.config 是 ASP.NET 应用程序的 XML 格式配置文件,位于网站根目录或子目录中,用于声明式地控制运行时行为、连接字符串、身份验证、模块加载、错误处理等。它不参与编译,但被 IIS 和 .NET 运行时在启动和请求过程中主动读取。
Web.config 文件必须放在哪里才能生效
ASP.NET(包括 .NET Framework 和 .NET Core/5+ 的兼容模式)要求 Web.config 位于应用的根目录(即 IIS 站点物理路径起点),否则会被忽略。子目录可放独立 Web.config,但只影响该目录及子目录下的请求,且会继承上级配置(部分节如 不支持叠加,后加载的会覆盖)。
- IIS 托管:必须与
Global.asax或应用入口(如web.config同级的Default.aspx)在同一级 - 本地开发(IIS Express / Visual Studio):项目属性 → “Web” 选项卡 → “Project Url” 对应的物理路径根下
- .NET Core/5+ 中已弃用
Web.config主配置功能,仅在 IIS 集成场景下保留用于aspNetCore模块配置,其余用appsettings.json
修改 connectionStrings 节时常见错误
连接字符串写错最直接的表现是 System.Data.SqlClient.SqlException: A network-related or instance-specific error... 或空连接对象。问题常出在拼写、转义、环境适配上。
-
name属性必须与代码中ConfigurationManager.ConnectionStrings["xxx"]的键名完全一致(区分大小写) - SQL Server 实例名若含反斜杠(如
.\SQLEXPRESS),需确保在 XML 中未被误转义;推荐用\或直接写为localhost\SQLEXPRESS - 使用集成安全(
Integrated Security=true)时,IIS 应用池标识必须有数据库访问权限;改用 SQL 账号则需开启混合认证并确认登录名未被锁定 - 发布到服务器时,
Web.config中的明文密码属于高危行为,应配合aspnet_regiis.exe -pef加密connectionStrings节
system.webServer 模块配置导致 500.19 错误
IIS 报错 HTTP Error 500.19 - Internal Server Error,详细信息里出现“无法识别的属性”或“此配置节已被锁定”,基本是 下配置了仅适用于特定 IIS 版本或未安装模块的项。
本文档主要讲述的是Android的资源与国际化设置;资源是外部文件(不含代码的文件),它被代码使用并在编译时编入应用程序。Android支持不同类型的资源文件,包括XML,PNG以及JPEG文件XML文件根据描述的不同有不同格式。这份文档描述可以支持什么样的文件,语法,以及各种格式。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
-
在 IIS 7.5+ 可用,但会降低静态文件性能;.NET 4.5+ 推荐改用 -
中添加自定义 Header(如X-Frame-Options)没问题,但若写成而不是,XML 解析失败直接 500.19 - 启用压缩(
)前,需确认 IIS 中“静态内容压缩”功能已安装(Windows 功能 → IIS → 性能功能)
调试 Web.config 加载是否成功
没有日志输出、也不报错,但配置没起作用?最有效的验证方式不是看代码,而是让 IIS 显式吐出当前合并后的配置。
- 命令行执行:
%windir%\system32\inetsrv\appcmd list config "Default Web Site/" -section:system.webServer/handlers(替换站点名和 section) - 在
Global.asax.cs的Application_Start中加一行:System.Diagnostics.Debug.WriteLine(ConfigurationManager.AppSettings["MyKey"]);,然后查看 Output 窗口(仅开发环境) - 临时把
Web.config改成非法 XML(比如删一个>),如果访问直接 500.19 而非 500,说明文件确实被加载了 - 注意:IIS 缓存配置,修改后不一定立即生效;可执行
iisreset /noforce或回收对应应用池
真正容易被忽略的是配置节的继承规则和锁机制——Web.config 不是“越靠下越优先”,而是按 IIS 配置层级(服务器 → 站点 → 应用 → 目录)逐级合并,某些节默认被 allowOverride="false" 锁定,强行写会导致 500.19。动手前先查 MSDN 对应节的“Configuration Section Information”说明。









