您可以使用服务提供商获取服务实例:
建立服务提供商-
var provider = services.BuildServiceProvider();
获得特定服务-
provider.GetService<T>();
尽管更好的选择是使用IConfiguration .NET Core提供的-https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1
使用此方法,您可以设置IConfiguration来解析Startup
方法中的配置设置。然后,您可以从那里将这些设置注入所需的类中。
,
在构建上下文时可以访问IServiceProvider
:
services.AddDbContext<MyContext>((serviceProvider,options) =>
{
var configManager = serviceProvider.GetService<IConfigurationManager>();
options.UseSqlServer(configManager.DatabaseConnectionString);
});
但是,这里最好的选择可能是读取Iconfiguration
中注入的Startup.cs
:
public class Startup
{
public IConfiguration Configuration { get; }
public IHostingEnvironment HostingEnvironment { get; }
public Startup(IConfiguration configuration,IHostingEnvironment env)
{
Configuration = configuration;
HostingEnvironment = env;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<MyContext>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString("MyContext"));
});
}
}
,
您也可以做类似的事情。
我不熟悉您如何使用配置管理器来提供准确的答案。
基本上,您可以在Program.cs中进行预配置。
在此处构建您的配置。如您所见,我正在通过IConfigurationBuilder
。
Program.cs
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(AddDbConfiguration)
.UseStartup<Startup>();
private static void AddDbConfiguration(WebHostBuilderContext context,IConfigurationBuilder builder)
{
var configuration = builder.Build(); // you could instantiate you Configuration manager here and append to the configuration.
var connectionString = configuration.GetConnectionString("Database");
builder.AddDemoDbProvider(options => options.UseSqlServer(connectionString));
}
来源:https://medium.com/@dneimke/custom-configuration-in-net-core-2-193ff6f02046
本文链接:https://www.f2er.com/2926676.html