2016-11-21 81 views
3

基本ConfigureServices方法是这样的ASP.NET 1.0的核心接入服务:该方法结束我要运行一些自定义逻辑在ConfigureServices方法(Startup.cs)

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

就越过我的脑海......也许,如果我用一个自定义的服务中间件,并在那里运行我的逻辑是什么? – user2818430

+0

你需要执行什么样的逻辑?是每个请求还是应用程序启动时的一次? –

回答

1

您可以使用BuildServiceProvider方法来解决服务:

public void ConfigureServices(IServiceCollection services) 
{ 
    //... 
    services.AddTransient<IEmailSender, AuthMessageSender>(); 
    //... 

    var provider = services.BuildServiceProvider(); 
    var emailSender= provider.GetService<IEmailSender>(); 
    // use emailSender 
} 
相关问题