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

.NET6.0中WebApplicationBuilder使用UseUnityServiceProvider不生效

解决.NET6中UnityContainer ConfigureContainer未触发的问题

方案1:保留Startup.cs并触发ConfigureContainer

.NET6的WebApplicationBuilder默认不会自动调用Startup.cs中的ConfigureContainer方法,需要手动指定使用Startup类来恢复原有逻辑:

在Program.cs中修改配置:

var builder = WebApplication.CreateBuilder(args);

// 配置Unity服务提供器并指定Startup类
builder.WebHost.UseUnityServiceProvider()
               .UseStartup<Startup>();

var app = builder.Build();

// 后续中间件配置...
app.Run();

你的Startup.cs可以保留原有ConfigureContainer方法不变:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        // 原生服务配置逻辑(如添加MVC、Swagger等)
    }

    public void ConfigureContainer(IUnityContainer container)
    {
        // 你的Unity依赖注册逻辑
        container.RegisterType<IMyService, MyService>();
        // 更多注册项...
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // 中间件管道配置
    }
}

方案2:直接在Program.cs中注册Unity依赖(适配.NET6最小API风格)

如果不想保留Startup.cs,可以直接在Program.cs中完成Unity依赖注册,替代ConfigureContainer的作用:

方式A:提前创建容器并传入

var builder = WebApplication.CreateBuilder(args);

// 创建Unity容器并完成依赖注册
var unityContainer = new UnityContainer();
unityContainer.RegisterType<IMyService, MyService>();
// 其他依赖注册...

// 将容器传入Unity服务提供器
builder.WebHost.UseUnityServiceProvider(unityContainer);

var app = builder.Build();

// 后续中间件配置...
app.Run();

方式B:使用回调注册

var builder = WebApplication.CreateBuilder(args);

// 配置Unity服务提供器时,通过回调完成依赖注册
builder.WebHost.UseUnityServiceProvider(container =>
{
    container.RegisterType<IMyService, MyService>();
    // 更多注册项...
});

var app = builder.Build();

// 后续中间件配置...
app.Run();

注意事项

  • 确保安装的Unity.AspNetCore包版本适配.NET6(推荐使用5.0及以上版本,该版本兼容.NET6)
  • 避免混合使用原生DI和Unity注册同一服务,防止依赖解析冲突
  • 如果原有项目中Startup.cs包含ConfigureServices方法,使用UseStartup<Startup>()会自动调用该方法,保持原有原生服务配置逻辑不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:06:21