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

Worker Service启动时如何访问ConfigurationManager获取连接字符串?

解决方案

方案一:使用Host内置的IConfiguration(推荐)

Host.CreateDefaultBuilder(args)已经默认加载了多种配置源(如appsettings.json、环境变量、命令行参数等),你可以通过两种方式获取连接字符串:

方式1:在ConfigureServices外部提前获取配置

var hostBuilder = Host.CreateDefaultBuilder(args);
var configuration = hostBuilder.Configuration;

IHost host = hostBuilder
    .ConfigureServices(services =>
    {
        services.AddHostedService<WorkerService>();
        services.AddHangfire(config => config
            .UseSqlServerStorage(configuration.GetConnectionString("YourConnectionStringName")));
        services.AddHangfireServer();
    })
    .UseWindowsService()
    .Build();

方式2:在ConfigureServices内部通过上下文获取

IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices((context, services) =>
    {
        services.AddHostedService<WorkerService>();
        services.AddHangfire(config => config
            .UseSqlServerStorage(context.Configuration.GetConnectionString("YourConnectionStringName")));
        services.AddHangfireServer();
    })
    .UseWindowsService()
    .Build();

注意:需要在appsettings.json中配置连接字符串节点:

{
  "ConnectionStrings": {
    "YourConnectionStringName": "Server=.;Database=HangfireDb;Trusted_Connection=True;"
  }
}

方案二:使用ConfigurationManager(不推荐,仅兼容旧场景)

如果必须使用ConfigurationManager,按以下步骤操作:

  1. 安装NuGet包:System.Configuration.ConfigurationManager
  2. 添加app.config文件并配置连接字符串:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="YourConnectionStringName" 
         connectionString="Server=.;Database=HangfireDb;Trusted_Connection=True;" 
         providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>
  1. 将app.config的复制到输出目录设置为「如果较新则复制」或「始终复制」
  2. 直接调用方法获取连接字符串:
IHost host = Host.CreateDefaultBuilder(args)
    .ConfigureServices(services =>
    {
        services.AddHostedService<WorkerService>();
        services.AddHangfire(config => config
            .UseSqlServerStorage(System.Configuration.ConfigurationManager.GetConnectionString("YourConnectionStringName")));
        services.AddHangfireServer();
    })
    .UseWindowsService()
    .Build();

推荐说明

优先选择方案一,它符合.NET Core/.NET 5+的现代配置体系,支持多环境配置、多种配置源,扩展性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:52:34