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

.NET 6 Worker Service获取appsettings.json连接字符串报错:Configuration不存在

解决方案

报错原因是当前ConfigureServices的重载仅接收IServiceCollection参数,没有直接暴露Configuration对象,导致无法直接引用。以下是两种解决方式:

方法一:使用带HostBuilderContext的重载

修改ConfigureServices的委托签名,添加HostBuilderContext参数,通过该上下文对象获取配置:

using Microsoft.Extensions.Configuration;
using WorkerService;

IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices((context, services) =>
    {
        services.Configure<WorkerService.DAL._DBConnStr>(context.Configuration.GetSection("ConnectionStrings"));

        services.AddHttpClient();
        services.AddHostedService<Worker>();
    })
    .Build();

await host.RunAsync();

方法二:提前构建配置对象

先手动构建IConfiguration实例,再在ConfigureServices中使用:

using Microsoft.Extensions.Configuration;
using WorkerService;

var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddCommandLine(args)
    .Build();

IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        services.Configure<WorkerService.DAL._DBConnStr>(configuration.GetSection("ConnectionStrings"));

        services.AddHttpClient();
        services.AddHostedService<Worker>();
    })
    .Build();

await host.RunAsync();

额外注意事项

确保_DBConnStr类的属性名称与appsettings.json中ConnectionStrings下的键名一致(大小写不敏感,但建议保持匹配),示例类结构:

namespace WorkerService.DAL
{
    public class _DBConnStr
    {
        public string Sqlserver1ConnectionString { get; set; }
        public string Oracle1ConnectionString { get; set; }
        // 对应其他连接字符串的属性
    }
}

内容的提问来源于stack exchange,提问作者A.K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:35:19