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

Asp.Net Core 5.0部署Linux后出现connectionString参数为空异常

问题解决步骤

报错核心原因是程序运行时读取不到DefaultConnection对应的连接字符串,导致参数为空抛出异常,本地Windows环境正常是因为Windows环境的文件大小写、配置源、工作目录等规则和Linux不一致,可按以下步骤逐一排查:

  • 检查配置文件大小写与完整性
    Linux系统大小写敏感,首先确认部署目录下的配置文件名为全小写的appsettings.json,AppSettings.json、appSettings.json都无法被默认加载。同时检查JSON格式是否完整,你贴出的配置片段末尾缺少闭合的},JSON格式错误会导致配置节点读取失败。
  • 排查配置源覆盖问题
    你之前有过Azure部署历史,首先确认启动代码中是否残留AddAzureKeyVault、AddAzureAppConfiguration等Azure配置注入逻辑,这类配置源优先级默认高于本地appsettings.json,Linux环境下没有对应的Azure访问权限时,会导致连接字符串读取为空。
    另外Asp.NET Core默认配置优先级从低到高为:appsettings.json → appsettings.{环境名}.json → 环境变量 → 命令行参数,可检查当前运行环境的ASPNETCORE_ENVIRONMENT值,确认对应环境的配置文件中没有把DefaultConnection设为空,也可查看系统环境变量中是否存在ConnectionStrings__DefaultConnection的空值配置,高优先级配置会覆盖本地配置文件的有效值。
  • 验证工作目录配置
    如果使用systemd托管程序,打开对应的.service配置文件,确认WorkingDirectory参数指向的是appsettings.json所在的程序部署根目录,工作目录配置错误会导致程序找不到配置文件。如果是手动启动程序,确认启动时的当前目录是程序部署目录。
  • 确认发布配置
    检查本地项目中appsettings.json的文件属性,设置为如果较新则复制,确保发布打包时配置文件会被包含到输出目录中。
  • 临时加日志定位
    可在程序启动逻辑中添加临时日志输出Configuration.GetConnectionString("DefaultConnection")的实际值,确认是读取环节就为空还是后续业务代码处理时被置空。

内容的提问来源于stack exchange,提问作者Edenn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:03