Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Net核心:从WebApplicationFactory查找服务_C#_Asp.net Core_Dependency Injection_.net Core - Fatal编程技术网

C# Net核心:从WebApplicationFactory查找服务

C# Net核心:从WebApplicationFactory查找服务,c#,asp.net-core,dependency-injection,.net-core,C#,Asp.net Core,Dependency Injection,.net Core,如何从CustomWebApplicationFactory获取所有服务? Startup类已对IDepartmentRepository和IDepartmentAppService执行依赖项注入。想要获取新的DI存储库或服务 我们正在创建指向原始应用程序启动的集成测试 namespace Integrationtest { public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory&l

如何从CustomWebApplicationFactory获取所有服务? Startup类已对IDepartmentRepository和IDepartmentAppService执行依赖项注入。想要获取新的DI存储库或服务

我们正在创建指向原始应用程序启动的集成测试

namespace Integrationtest
{
    public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup : class
    {
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureAppConfiguration((hostingContext, configurationBuilder) =>
            {
                var type = typeof(TStartup);
                var path = @"C:\\OriginalApplicationWebAPI";

                configurationBuilder.AddJsonFile($"{path}\\appsettings.json", optional: true, reloadOnChange: true);
                configurationBuilder.AddEnvironmentVariables();
            });
        }
    }
}

public class DepartmentAppServiceTest : IClassFixture<CustomWebApplicationFactory<OriginalApplication.Startup>>

{
    public testDbContext context;
    private readonly HttpClient _client;

    public DepartmentAppServiceTest(CustomWebApplicationFactory<OriginalApplication.Startup> factory)
    {
        _client = factory.CreateClient();
        factory.  // trying to find services here for IDepartmentRepository 
    }
这是factory.Host.Services。不要忘记,您需要创建一个作用域来访问作用域服务,例如您的上下文:

using (var scope = _factory.Host.Services.CreateScope())
{
    var foo = scope.ServiceProvider.GetRequiredService<Foo>();
    // do something
}
收到的错误:

“CustomWebApplicationFactory”不包含“主机”的定义,并且找不到接受“CustomWebApplicationFactory”类型的第一个参数的可访问扩展方法“主机”。是否缺少using指令或程序集引用

因此,我必须在添加服务器的情况下使用它,如下所示:

using (var scope = _factory.Server.Host.Services.CreateScope())
{
    // do something
}

我收到错误'CustomWebApplicationFactory'不包含'Host'的定义,并且找不到可访问的扩展方法'Host'接受类型为'CustomWebApplicationFactory'的第一个参数。您是否缺少using指令或程序集引用?因此我不得不使用它,var scope=\u factory.Server.Host.Services.createScope请随意添加答案,我将删除我的答案并打分!谢谢