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

如何在.NET 6 Worker Service项目中集成并初始化ASP.NET Core Web API

解决方案

在.NET 6中,你不需要分开维护Worker Service和Web API两个独立的宿主构建逻辑,可以通过WebApplication.CreateBuilder统一构建,同时启用Web API端点和后台Worker服务,具体实现如下:

替换Worker Service的Program.cs代码

直接使用WebApplication.CreateBuilder(它是.NET 6统一的宿主构建器,兼容Worker Service的后台任务能力),整合Web API的服务配置和Worker的后台服务注册:

var builder = WebApplication.CreateBuilder(args);

// 1. 添加Web API所需服务(复制原WebAPI项目的服务配置)
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

// 2. 添加Worker后台服务(原Worker Service的核心逻辑)
builder.Services.AddHostedService<Worker>();

var app = builder.Build();

// 3. 配置Web API请求管道(复制原WebAPI项目的中间件配置)
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();

// 启动宿主(同时运行Web API和Worker后台任务)
await app.RunAsync();

关键说明

  • WebApplication.CreateBuilder替代了原Worker的Host.CreateDefaultBuilder,它本质上是ASP.NET Core 6对宿主构建的统一封装,既支持Web API的HTTP端点,也支持注册IHostedService类型的后台任务。
  • 你不需要再单独维护两个项目的Program.cs,可以把原Web API项目中的控制器、模型等代码迁移到Worker Service项目中,然后删除单独的Web API项目(如果不需要独立部署的话)。
  • 如果必须保留两个独立项目,也可以将Worker Service作为Web API项目的一个后台服务注册,即在Web API的Program.cs中添加builder.Services.AddHostedService<Worker>(),这样启动Web API时会同时运行Worker任务。

原代码报错原因

你之前尝试用UseStartup<APIStartup>报错,是因为.NET 6采用了顶级语句+最小API的新范式,不再默认使用Startup.cs类,所有服务配置和中间件配置都直接在Program.cs中完成,无需依赖Startup类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:31:02