.NET6极简托管模式下Program.cs依赖注入配置报错求助
.NET6极简托管模式下依赖注入配置错误(CS0103)解决方法
我刚接触.NET6的Program.cs极简托管模式,迁移依赖注入代码适配新模式时遇到问题。我的解决方案包含两个项目,在Program.cs中配置依赖注入时出现CS0103错误,提示'configuration'在当前上下文不存在。
相关代码
DbContext代码
using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WorkRequest.Data.Models; namespace WorkRequest.Data.Context { public partial class WorkRequestContext : DbContext { public WorkRequestContext() { } public WorkRequestContext(DbContextOptions<WorkRequestContext> options) : base(options) { } public virtual DbSet<RequestType> RequestType { get; set; } public virtual DbSet<RequestForm> RequestForm { get; set; } public virtual DbSet<AssignedTo> AssignedTo { get; set; } } }
依赖注入扩展类代码
using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using SETWorkRequest.Data.Context; namespace WorkRequest.Data { public static class ServiceCollectionExtensions { public static IServiceCollection RegisterDataServices( this IServiceCollection services, IConfiguration configuration) { services.AddDbContext<WorkRequestContext>(options => options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"))); return services; } } }
出错的Program.cs代码
using WorkRequest.Data; namespace WorkRequest.Web { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.RegisterDataServices(configuration); var app = builder.Build(); // Configure the HTTP request pipeline. 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(); } } }
错误原因
在.NET6的极简托管模式中,configuration不再是直接可用的全局变量,而是通过builder.Configuration属性来访问。原代码中直接使用未定义的configuration变量,因此触发CS0103错误。
修正方案
将Program.cs中调用RegisterDataServices的代码修改为使用builder.Configuration作为参数:
builder.Services.RegisterDataServices(builder.Configuration);
修正后的完整Program.cs代码
using WorkRequest.Data; namespace WorkRequest.Web { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllersWithViews(); // 修正:使用builder.Configuration替代未定义的configuration变量 builder.Services.RegisterDataServices(builder.Configuration); var app = builder.Build(); // Configure the HTTP request pipeline. 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(); } } }
额外注意:检查依赖注入扩展类中的命名空间引用SETWorkRequest.Data.Context是否正确,需与DbContext的命名空间WorkRequest.Data.Context保持一致,否则会出现找不到WorkRequestContext的错误。
内容的提问来源于stack exchange,提问作者SND69
相关产品推荐
相关产品推荐

