ConfigureServices方法中的ASP.NET Core 1.0访问服务(Startup.cs)

时间:2016-11-21 07:31:08

标签: c# entity-framework-core asp.net-core-1.0

基本的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从数据库中获取数据。

1 个答案:

答案 0 :(得分:2)

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

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

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