2017-09-16 9 views
0

startup.cs에서 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 메서드에 HttpContext에 액세스하려고합니다.app.UseStatusCodePages에서 HttpContext에 액세스

내가 이것을하고 싶은 이유는 401 response to a login page을 리디렉션하려는 것입니다. 상기 예에서

app.UseStatusCodePages(async context => { 
    var request = context.HttpContext.Request; 
    var response = context.HttpContext.Response; 

    if (response.StatusCode == (int)HttpStatusCode.Unauthorized) 
     // you may also check requests path to do this only for specific methods  
     // && request.Path.Value.StartsWith("/specificPath") 

     { 
      response.Redirect("/account/login"); 
     } 
    }); 

context

HttpContext 속성이 없다. HttpContext에 액세스하려면 어떻게해야합니까?

+0

에 따르면 문서 : 구성 상태 코드 페이지 (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling#configuring -status-code-pages) 코드가 작동해야합니다. 비동기를 수행하지 않으면 expression 매개 변수에서 'async' 접두사를 제거하십시오. – Nkosi

+0

@Nkosi 문제는 context.HttpContext.Request에 HttpContext가 없으므로 더 많은 설정이 누락되어 있어야합니다 ... – Liam

+0

세미콜론이 누락되었습니다. response.Redirect ("/ account/login"); 코드가 오류없이 컴파일됩니다. –

답변

0

UseStatusCodePages (이 IApplicationBuilder 앱, 동작 구성) 확장 메서드 오버로드를 사용하려고합니다.

UseStatusCodePages (이 IApplicationBuilder 앱, Func < StatusCodeContext, 작업 > 처리기)를 사용해야합니다. 이 같은

뭔가 :

app.UseStatusCodePages(context => { 
    var request = context.HttpContext.Request; 
    var response = context.HttpContext.Response; 

    if (response.StatusCode == (int)HttpStatusCode.Unauthorized) 
    { 
     response.Redirect("/account/login"); 
    } 

    return Task.CompletedTask; 
});