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

ASP.NET Core 6+ 启动阶段如何访问Configuration读取appsettings配置

.NET 6+ 获取Configuration与环境对象方案

在.NET 6及以上版本的顶级语句Program.cs模式中,你创建的WebApplicationBuilder实例本身就内置了Configuration和Environment属性,无需额外注入,直接访问这两个属性即可拿到对应的IConfiguration、IWebHostEnvironment对象,用法和之前Startup.cs中的对应对象完全一致。

你当前报错的修复方法

你报错的原因是没有从builder实例上获取Configuration属性,直接将报错行的Configuration.GetConnectionString修改为builder.Configuration.GetConnectionString即可,同时你重复注册了FestifyContext,需要删掉多余的空DbContext注册行。

修复后的核心代码段如下:

using Festify.Database;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

// 删掉原来多余的 builder.Services.AddDbContext<FestifyContext>(); 行

// 直接从builder取Configuration
builder.Services.AddDbContext<FestifyContext>(opt =>
        opt.UseSqlServer(
            builder.Configuration.GetConnectionString("Festify")));


var app = builder.Build();

// 以下原有逻辑不变
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

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

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

补充用法说明

  • 读取其他配置:除连接字符串外,读取appsettings.json中其他节点的配置可以使用builder.Configuration["配置节点名:子节点名"]的写法
  • 环境对象获取:在调用builder.Build()之前需要判断环境、获取根路径等操作,直接使用builder.Environment即可;Build完成后得到的app实例也暴露了Environment属性,你现有代码中app.Environment.IsDevelopment()就是正确用法
  • 依赖注入使用:如果自定义服务需要使用IConfiguration或IHostEnvironment,依然可以直接在服务构造函数中注入,框架已经默认将这两个实例注册到依赖注入容器中,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:57:06