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

C#中ConnectionString配置引发空引用异常问题求助

问题描述

我认为我的ConnectionString配置存在问题。我的C#代码如下:

public List<Usuario> getUsuario()
{
    List<Usuario> usuarios = new List<Usuario>();

    string strConn = ConfigurationManager
                        .ConnectionStrings["BDLocal"]
                        .ConnectionString;

    using (SqlConnection conn = new SqlConnection(strConn))

web.config中的连接字符串配置如下:

<connectionStrings>
  <add 
    name="BDLocal" 
    connectionString="Data Source=DESKTOP-EJ\SQLEXPRESS;Initial 
    Catalog=Crud.Data;Persist Security Info=True;User 
    ID=user;Password=pass"
    providerName="System.Data.SqlClient"
  />
</connectionStrings>

访问api/usuario接口时,出现以下错误:

System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Configuration.ConnectionStringSettingsCollection.this[string].get returned null.

我知道自己肯定哪里操作有误,但找不到问题所在,请求帮助。

解决方案

1. 验证配置文件的有效性

  • 确认web.config位于项目根目录,且发布/运行时该文件被正确复制到输出目录。若使用IIS部署,检查站点对应的物理路径下是否存在正确的web.config。
  • 核对连接字符串的name属性值BDLocal与代码中引用的名称完全一致(虽然.NET默认不区分大小写,但完全匹配可避免潜在问题)。

2. 确认程序集引用

如果是.NET Framework项目,必须确保已添加System.Configuration相关引用:

  • 右键项目 → 管理NuGet程序包 → 搜索并安装System.Configuration.ConfigurationManager;或直接在项目引用中添加系统程序集System.Configuration。

3. 区分.NET版本的配置方式

如果项目基于.NET Core/.NET 5+,禁止使用ConfigurationManager,改用IConfiguration读取配置:

  • 在Program.cs(.NET 6+)中配置已自动加载,直接注入IConfiguration即可:
    var builder = WebApplication.CreateBuilder(args);
    // 配置已默认加载,可直接在服务/控制器中注入IConfiguration
    
  • 在控制器或服务中注入并读取连接字符串:
    private readonly IConfiguration _configuration;
    
    public YourController(IConfiguration configuration)
    {
        _configuration = configuration;
    }
    
    public List<Usuario> getUsuario()
    {
        List<Usuario> usuarios = new List<Usuario>();
        string strConn = _configuration.GetConnectionString("BDLocal");
        using (SqlConnection conn = new SqlConnection(strConn))
        {
            // 后续数据库操作代码
        }
    }
    
  • .NET Core/.NET 5+项目的连接字符串需配置在appsettings.json中:
    {
      "ConnectionStrings": {
        "BDLocal": "Data Source=DESKTOP-EJ\\SQLEXPRESS;Initial Catalog=Crud.Data;Persist Security Info=True;User ID=user;Password=pass"
      }
    }
    

4. 检查连接字符串格式与权限

  • 确认Data Source中的服务器名DESKTOP-EJ\SQLEXPRESS正确,SQL Server实例处于运行状态。
  • 验证Initial Catalog指定的Crud.Data数据库存在,且配置的User ID和Password拥有该数据库的访问权限。
  • XML配置中反斜杠无需转义,但JSON中需写成双反斜杠\\。

5. 排查运行环境配置覆盖问题

  • 若在IIS中部署,检查站点的“连接字符串”设置(IIS管理器 → 站点 → 连接字符串)是否覆盖了web.config中的配置。
  • 确保运行Web API的进程(如IIS应用池身份)拥有读取配置文件的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:35:48