基本的ConfigureServices方法如下所示:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddMvc();
services.AddTransient<IEmailSender, AuthMessageSender>();
services.AddTransient<ISmsSender, AuthMessageSender>();
//custom logic here
}
在方法结束之前,我想运行一些自定义逻辑。但是我需要访问ApplicationDbContext并从那里获得一些配置。另一件事是我想使用AuthMessageSenver
服务发送电子邮件。
我的问题:如何访问我在同一方法中声明的服务。或者我如何使用我的ApplicationdDbContext从数据库中获取数据。
答案 0 :(得分:2)
您可以使用BuildServiceProvider
方法解析服务:
public void ConfigureServices(IServiceCollection services)
{
//...
services.AddTransient<IEmailSender, AuthMessageSender>();
//...
var provider = services.BuildServiceProvider();
var emailSender= provider.GetService<IEmailSender>();
// use emailSender
}