2016-11-21 16 views
3

基本ConfigureServices方法は、次のようになります。この方法は、私はいくつかのカスタム・ロジックを実行する前に終了ASP.NETコア1.0アクセスサービス(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にアクセスし、そこからいくつかの設定を取得する必要があります。もう1つは、AuthMessageSenverサービスを使用してメールを送信することです。

私の質問:同じ方法で宣言したサービスにはどうすればアクセスできますか?または、私はApplicationdDbContextを使ってデータベースからデータを取得する方法を教えてください。

+0

はちょうど私がカスタムサービスミドルウェアを使用して、そこに私のロジックを実行するかもしれない場合は...私の心を交差しましたか? – user2818430

+0

どのようなロジックを実行する必要がありますか?要求ごとに、またはアプリケーションの起動時に1回だけですか? –

答えて

1

あなたはサービスを解決するのにBuildServiceProviderメソッドを使用することができます。

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

    var provider = services.BuildServiceProvider(); 
    var emailSender= provider.GetService<IEmailSender>(); 
    // use emailSender 
} 
関連する問題