HttpContext.Session은 Razor 페이지나 View Component에서 사용 가능한 속성이지만 _Layout 페이지에서는 사용할 수 없다. 이는 _Layout 페이지는 레이아웃을 포함하는 페이지의 공통 요소인데 HttpContext.Session을 사용하면 세션이 여러 번 초기화될 수 있고, 예기치 않은 문제(예를 들어, _Layout 페이지에서 세션 값을 설정하고 다른 뷰에서 이 값을 읽으려고 할 때, _Layout 페이지가 가장 먼저 렌더링되기 때문에 세션 값이 아직 설정되지 않았을 수도 있다.)가 발생할 수 있기 때문이다. 따라서 _Layout 페이지에서 HttpContext.Session을 사용하려면, _ViewImports.cshtml 파일에 @using Microsoft.AspNetCore.Http를 추가하고, @inject IHttpContextAccessor HttpContextAccessor를 _Layout 페이지에 추가하여 HttpContext에 액세스할 수 있도록 해야한다.
그후 HttpContextAccessor.HttpContext.Session.GetString("Username") 식으로 HttpContext 앞에 HttpContextAccessor를 붙여 HttpContext 메서드를 사용해야한다.
'기타' 카테고리의 다른 글
| [ASP.NET Core/Devroup] ForeignKey: 외래키에 대해 (0) | 2023.03.31 |
|---|---|
| [ASP.NET Core/Devroup] TempData, ViewData에 대한 고찰 (0) | 2023.03.28 |
| [ASP.NET Core/Devroup] await 키워드에 대해 (0) | 2023.03.26 |
| [ASP.NET Core/Devroup] URL 요청에 대한 메서드 매핑에 관해서 (0) | 2023.03.25 |
| [ASP.NET Core/APOD] APOD 사이트 배포 (0) | 2023.03.18 |