2016-11-21 2 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 
} 
Смежные вопросы