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

如何在.NET 6单文件启动模板项目中集成Autofac依赖注入

.NET 6 单文件Program.cs接入Autofac 方案

前置校验

  • 确认NuGet包安装正确,注意包名拼写:
    • 必须安装 Autofac 6.3.0及以上版本
    • 必须安装 Autofac.Extensions.DependencyInjection 7.2.0及以上版本(注意拼写是Dependency不是Dependancy,避免装错包报错)
  • 你当前使用的.NET 6 RC2运行时版本可正常适配该方案。

完整修改后的Program.cs代码

using Autofac;
using Autofac.Extensions.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);

// 核心配置:接入Autofac服务提供工厂
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());

// 配置Autofac容器,注册自定义服务
builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder =>
{
    // 此处编写你的Autofac服务注册逻辑,示例:
    // containerBuilder.RegisterType<DemoService>().As<IDemoService>().InstancePerLifetimeScope();
});

// 原有服务注册逻辑无需修改
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// 原有中间件配置逻辑无需修改
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

适配说明

.NET 6 提供的WebApplicationBuilder已经内置暴露了Host属性,直接调用原有的UseServiceProviderFactory扩展方法即可完成Autofac接入,不需要自己重构为旧版的Host.CreateDefaultBuilder写法,原有服务注册、中间件配置逻辑都可以保留不需要修改。
Autofac会自动接管所有系统内置服务和你自己注册的服务,后续获取服务可以直接通过app.Services获取,和原生用法完全一致。

内容的提问来源于stack exchange,提问作者github-user-202

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:15:04