ASP.NET v5使用ConfigurationManager.AppSettings读取web.config值为空如何解决
问题根因
ASP.NET v5属于ASP.NET Core系列版本,默认不再使用.NET Framework体系下的ConfigurationManagerAPI读取配置,且web.config仅作为IIS部署时的服务器配置文件存在,默认不会被加载为应用配置文件,因此直接调用ConfigurationManager.AppSettings["key"]会返回空值。
解决方案
方案1:沿用传统ConfigurationManager读取逻辑
如果需要兼容旧代码的写法,按以下步骤配置即可:
- 安装适配你当前.NET版本的NuGet包:
System.Configuration.ConfigurationManager - 右键项目中的web.config文件,选择「属性」,将「复制到输出目录」项设置为「如果较新则复制」
- 确认web.config的配置结构符合标准格式,示例如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="dbconnectionstring" value="你的实际数据库连接串" /> <add key="Databasename" value="你的实际数据库名称" /> </appSettings> <!-- 原有IIS部署相关配置保留即可 --> </configuration>
完成以上配置后即可正常通过ConfigurationManager.AppSettings["dbconnectionstring"]读取到对应值。
方案2:使用ASP.NET Core原生配置体系(更推荐)
这是ASP.NET Core的标准配置实现,灵活性更高,适配多环境、配置中心等扩展场景:
- 将配置项迁移到项目默认的
appsettings.json文件中,示例如下:
{ "AppSettings": { "dbconnectionstring": "你的实际数据库连接串", "Databasename": "你的实际数据库名称" } }
- 通过依赖注入注入
IConfiguration接口读取配置,代码示例如下:
public class CustomerService : ICustomerService { private readonly IConfiguration _configuration; // 构造函数注入IConfiguration实例 public CustomerService(IConfiguration configuration) { _configuration = configuration; } public void AddCustomer() { // 读取配置项 string yeet = _configuration["AppSettings:dbconnectionstring"]; // 后续业务逻辑 } }
内容的提问来源于stack exchange,提问作者Franco
相关产品推荐
相关产品推荐

