2017-11-29 14 views
2

요청의 헤더에서 각 요청에 대한 싱글 톤 값을 클래스 인스턴스에 지정하려고합니다.
Startup 클래스의 ConfigureServices 메서드에서 .net 코어를 할당하려고합니다. 이 같은
뭔가 :WebApi Core 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"]; 
});