2016-11-21 22 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 
} 
相關問題