ConfigureServices方法中的ASP.NET Core 1.0訪問服務(Startup.cs)

asp.net-core-1.0 c# entity-framework-core

基本的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從數據庫中獲取數據。

熱門答案

您可以使用BuildServiceProvider方法來解析服務:

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

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


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因