클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (514)
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (301)
      • C# (84)
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • node.js
  • CSS3
  • android studio
  • HTML5
  • .NET
  • asp.net core web api
  • 변수
  • jQuery
  • android
  • ASP.NET
  • c#
  • asp.net core
  • NestJS
  • exception
  • Windows API
  • Kotlin
  • MariaDB
  • Entity Framework
  • LINQ
  • JavaScript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

.NET/ASP.NET

[ASP.NET Core] Session

2021. 11. 14. 03:06
728x90

1. Service 설정

 

Startup.cs의 ConfigureServices() method에서 Session을 사용하기 위한 Service를 추가합니다.

services.AddDistributedMemoryCache();
services.AddSession(option =>
{
    option.Cookie.Name = "mySession";
    option.IdleTimeout = TimeSpan.MaxValue; //기본값 20분
});

AddDistributedMemoryCache() method는 Server의 Cache memory를 사용하도록 하기 위한 것으로 Session을 저장하기 위함이며 AddSession()은 Session자체의 설정으로 Cookie.Name으로 Session의 이름을, IdleTimeout으로 Session의 유효시간을 지정하였습니다. 특히 IdleTimeout값은 따로 설정하지 않으면 기본 20분이 되는데 예제에서는 이 시간에 최대치를 부여했으나 memory관리 측면에서 되도록 짧은 시간을 부여할것을 권장합니다.

 

2. Middleware 추가

 

Startup.cs의 Configure() method에서 Session을 사용하기 위한 Middleware를 추가합니다.

app.UseSession();

이 설정은 반드시 UseEndpoints()나 UseMVC()위에서 선언되어야 합니다.

 

3. Session 저장하고 가져오기

 

Session은 Set() method를 통해 필요한 값을 저장할 수 있습니다. 이때 첫 번째 인수로 저장된 값을 구분하기 위한 key를 지정하며 두 번째 인수로 저장하고자 하는 Data자체를 설정합니다.

MyData md = new();
md.Id = 1;
md.Name = "abc";

_context.Session.SetString("1key", JsonConvert.SerializeObject(md));
_context.Session.SetString("2key", "hello");
_context.Session.SetInt32("3key", 100);

반대로 값을 가져오는 경우는 Get() method를 사용하며 저장할때 사용한 key값을 통해 필요한 값을 가져오게 됩니다.

var result = JsonConvert.DeserializeObject<MyData>(_context.Session.GetString("1key"));

TempData["id"] = result.Id;
TempData["name"] = result.Name;

TempData["2key"] = _context.Session.GetString("2key");

int? i = _context.Session.GetInt32("3key");
TempData["3key"] = i.Value;

_context.Session.Remove("1key");
_context.Session.Remove("2key");
_context.Session.Remove("3key");

마지막으로 Session을 삭제하고자 한다면 Remove를 통해 제거할 수 있으며 이때도 key값을 통해 제거합니다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'.NET > ASP.NET' 카테고리의 다른 글

[ASP.NET Core] HttpContext.User  (0) 2022.02.10
[ASP.NET Core] Razor Page로 웹프로젝트 만들기  (10) 2022.01.24
[ASP.NET Core] Logging  (0) 2021.11.13
[ASP.NET Core] Claim 인증과 권한  (0) 2021.11.11
[ASP.NET Core] 암호화 사용하기(DataProtection)  (0) 2021.11.07
    '.NET/ASP.NET' 카테고리의 다른 글
    • [ASP.NET Core] HttpContext.User
    • [ASP.NET Core] Razor Page로 웹프로젝트 만들기
    • [ASP.NET Core] Logging
    • [ASP.NET Core] Claim 인증과 권한
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바