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

.NET 8.0从appsettings.json读取连接字符串的方法及疑问解答

问题解答

1. JSON配置正确性与ProviderName说明

你当前的ConnectionStrings配置结构不符合ASP.NET Core默认读取规范。默认情况下,GetConnectionString方法期望ConnectionStrings节点下的子项是字符串类型的连接字符串,而非嵌套对象。

正确的标准配置格式:

"ConnectionStrings": {
  "DefaultConnection": "Data Source=(local);Initial Catalog=MyDB;Integrated Security=SSPI;"
}

关于ProviderName:

  • 若使用Entity Framework Core,无需在此配置ProviderName,直接在AddDbContext时通过UseSqlServer等方法指定即可。
  • 若需单独存储ProviderName,可将其放在配置的独立节点中,比如:
"DatabaseSettings": {
  "DefaultConnection": "Data Source=(local);Initial Catalog=MyDB;Integrated Security=SSPI;",
  "ProviderName": "System.Data.SqlClient"
}

之后通过绑定自定义模型来读取该值。

2. Program.cs中依赖注入代码的位置

在.NET 6及以上的顶级语句模板中,依赖注入配置要放在**WebApplication.CreateBuilder创建完成后,Build方法调用前**,也就是builder.Services的配置区块内。

3. GetConnectionString方法不存在的解决

编译器提示方法不存在,通常是两个原因:缺少必要命名空间引用,或配置结构不符合默认读取规则。

完整解决方案代码

修正后的appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=(local);Initial Catalog=MyDB;Integrated Security=SSPI;"
  },
  "AllowedHosts": "*"
}

完整Program.cs(含DI配置与连接字符串读取)

using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration; // 必须添加此命名空间才能使用GetConnectionString

var builder = WebApplication.CreateBuilder(args);

// 依赖注入配置区域:在此添加你的服务
builder.Services.AddControllersWithViews();
// 示例:注册EF Core数据库上下文
builder.Services.AddDbContext<MyDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

var app = builder.Build();

// 中间件配置
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

关键说明

  • 必须添加using Microsoft.Extensions.Configuration;命名空间,GetConnectionString方法才会被识别。
  • 确保ConnectionStrings节点是标准键值对结构(子项为字符串值),而非嵌套对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:30:02