You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 6部署本地IIS加载失败:connectionString为空异常

ASP.NET Core 6生产环境连接字符串空值异常解决办法

核心问题

Secret Manager对应的secret.json是仅开发环境可用的机密存储工具,生产环境下IIS不会自动加载这个文件,所以你把连接字符串移过去后,生产环境根本读不到值,才会抛出System.ArgumentNullException。

生产环境正确配置方式

1. 用IIS环境变量配置(最直接)

  • 打开IIS管理器,找到你的目标站点,右键选「配置编辑器」
  • 顶部「节」下拉选system.webServer/aspNetCore
  • 找到environmentVariables,点击右侧「编辑」按钮
  • 新增环境变量:
    • 名称填ConnectionStrings__YourDbName(注意是双下划线,对应配置里的层级结构)
    • 值填你的完整数据库连接字符串
  • 保存设置后重启站点

2. 用Windows注册表存储(适合多站点共享机密)

  • 打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE,新建一个你的应用专属项(比如YourAppSecret)
  • 在这个项下新建字符串值,名称设为ConnectionStrings:YourDbName,值填连接字符串
  • 在Program.cs里添加读取逻辑:
    var builder = WebApplication.CreateBuilder(args);
    // 从注册表读取连接字符串
    var appSecretKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SOFTWARE\YourAppSecret");
    if (appSecretKey != null)
    {
        var connStr = appSecretKey.GetValue("ConnectionStrings:YourDbName")?.ToString();
        if (!string.IsNullOrEmpty(connStr))
        {
            builder.Configuration["ConnectionStrings:YourDbName"] = connStr;
        }
    }
    
  • 重新发布应用到IIS

3. 验证方法

  • 到站点部署目录打开CMD,运行dotnet YourApp.dll,看是否还会报连接字符串为空的错误
  • 查看IIS的事件查看器,确认应用启动时已正确加载连接字符串

内容的提问来源于stack exchange,提问作者Matěj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:24:55