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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:25:50