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

如何在自定义WebApplicationFactory中使用.NET 6.0 WebApplication.CreateBuilder?

适配WebApplication模型的自定义WebApplicationFactory实现

你可以通过手动调用Startup类的ConfigureServices和Configure方法,替代原有的UseStartup<TStartup>调用,来适配WebApplication模型。修改后的TestWebApiFactory实现如下:

public class TestWebApiFactory<TStartup> : WebApplicationFactory<TStartup>
    where TStartup : class
{
    protected override void ConfigureClient(HttpClient client)
    {
        base.ConfigureClient(client);
    }

    protected override IHostBuilder CreateHostBuilder()
    {
        return Host.CreateDefaultBuilder()
            .ConfigureAppConfiguration((context, config) =>
            {
                config.AddJsonFile("appsettings.json");                                    
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseTestServer();
                // 手动调用Startup的服务配置方法
                webBuilder.ConfigureServices(services =>
                {
                    var startup = Activator.CreateInstance<TStartup>();
                    startup.ConfigureServices(services);
                });
                // 手动调用Startup的请求管道配置方法
                webBuilder.Configure(app =>
                {
                    var startup = Activator.CreateInstance<TStartup>();
                    startup.Configure(app);
                });
            });
    }       
}

关键修改说明

  1. 移除UseStartup<TStartup>:WebApplication模型不再依赖UseStartup自动绑定配置逻辑,改为手动拆分调用Startup类的核心方法,对齐新模型的配置流程
  2. 拆分配置逻辑:将原Startup类的服务配置和管道配置分别移入ConfigureWebHostDefaults的ConfigureServices和Configure委托中,模拟WebApplication模型直接配置服务与管道的方式
  3. 保留原有配置:原有的appsettings.json加载逻辑、ConfigureClient方法均保持不变,确保测试环境与生产环境的配置一致性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:23:18