2017-11-29 3 views
2

リクエストのヘッダーから各リクエストにシングルトンとしてクラスインスタンスに値を割り当てる必要があります。
StartupクラスのConfigureServicesメソッドで.netコアを割り当てたいと思っていました。このような
何か:WebApiコアConfigureServicesのservices.AddScoped内のリクエストのヘッダーへのアクセス?

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddMvc(); 

    services.AddScoped<MyClass>(provider => 
    { 
     var myClass = new MyClass(); 
     myClass.PropName = provider.Request.Headers["PropName"]; // I want to access Request Header here 
    }); 
} 

私はAddScoped方法でリクエストのヘッダにアクセスするにはどうすればよいですか?

public MyClass(IHttpContextAccessor httpContextAccessor) 
{ 
    this.PropName = httpContextAccessor.HttpContext?.Request?.Headers["PropName"] 
} 

を次に、あなたのDIの設定に:また

services.AddScoped<MyClass>(); 

あなたが本当にでこれをアクセスする必要がある場合、

答えて

3

最もクリーンなアプローチは、次のようにあなたのMyClassコンストラクタを変更することですあなたのDIセットアップ、あなたは次のように修正することができます:

services.AddScoped<MyClass>(provider => 
{ 
    var myClass = new MyClass(); 
    myClass.PropName = provider.GetService<IHttpContextAccessor>()?.HttpContext?.Request?.Headers["PropName"]; 
}); 
関連する問題