Asp.net core 即使将该类添加到服务中,也无法从根提供程序解析作用域服务

Asp.net core 即使将该类添加到服务中,也无法从根提供程序解析作用域服务,asp.net-core,asp.net-core-3.1,Asp.net Core,Asp.net Core 3.1,在ASP.NET核心项目中,我有以下启动时的ConfigureServices方法: public void ConfigureServices(IServiceCollection services) { ... services.AddLiteDatabase<Database>(connectionString); ... } 我可以获取IWebHostEnvironment,但获取数据库时出错: Cannot resolve scoped servic

在ASP.NET核心项目中,我有以下启动时的ConfigureServices方法:

 public void ConfigureServices(IServiceCollection services) {
   ...
   services.AddLiteDatabase<Database>(connectionString);
   ...
 }
我可以获取IWebHostEnvironment,但获取数据库时出错:

Cannot resolve scoped service 'Database' from root provider.'
我错过了什么

剩余代码

在方法
AddLiteDatabase
中,我有:

public static void AddLiteDatabase<T>(this IServiceCollection services, String connectionString) where T : LiteDatabase {
  T database = (T)Activator.CreateInstance(typeof(T), new Object[] { connectionString });
  services.AddScoped<T>(x => database);
}
其他类别包括:

public interface IDatabaseConfiguration<T> where T : LiteDatabase {
  void Configure();
}

public class Database : LiteDatabase {
  public Database(String connection) : base (connection) { }
}

public class DatabaseConfiguration : IDatabaseConfiguration<LiteDatabase> {

  private readonly IApplicationBuilder _builder;

  public DatabaseConfiguration(IApplicationBuilder builder) {
    _builder = builder;
  }

  public void Configure() { 
    IServiceProvider provider = _builder.ApplicationServices;
    IWebHostEnvironment environment = provider.GetService<IWebHostEnvironment>();
    Database database = provider.GetService<Database>();
    ...
  }
}
公共接口IDatabaseConfiguration,其中T:LiteDatabase{
void Configure();
}
公共类数据库:LiteDatabase{
公共数据库(字符串连接):基本(连接){}
}
公共类数据库配置:IDatabaseConfiguration{
私有只读IApplicationBuilder\u builder;
公共数据库配置(IApplicationBuilder){
_建筑商=建筑商;
}
public void Configure(){
IServiceProvider=\u builder.ApplicationServices;
IWebHostEnvironment环境=provider.GetService();
数据库=provider.GetService();
...
}
}
public static void AddLiteDatabase<T>(this IServiceCollection services, String connectionString) where T : LiteDatabase {
  T database = (T)Activator.CreateInstance(typeof(T), new Object[] { connectionString });
  services.AddScoped<T>(x => database);
}
public static void UseLiteDatabase<T>(this IApplicationBuilder builder) where T : IDatabaseConfiguration<LiteDatabase> {
  T configuration = (T)Activator.CreateInstance(typeof(T), new Object[] { builder });
  configuration.Configure();
}
public interface IDatabaseConfiguration<T> where T : LiteDatabase {
  void Configure();
}

public class Database : LiteDatabase {
  public Database(String connection) : base (connection) { }
}

public class DatabaseConfiguration : IDatabaseConfiguration<LiteDatabase> {

  private readonly IApplicationBuilder _builder;

  public DatabaseConfiguration(IApplicationBuilder builder) {
    _builder = builder;
  }

  public void Configure() { 
    IServiceProvider provider = _builder.ApplicationServices;
    IWebHostEnvironment environment = provider.GetService<IWebHostEnvironment>();
    Database database = provider.GetService<Database>();
    ...
  }
}