ASP.NET InProc 세션 상태 모드를 사용하면 세션 데이터가 손실됩니다.

이 문서는 ASP.NET InProc 세션 상태 모드를 사용할 때 세션 데이터가 손실되는 문제를 resolve 데 도움이 됩니다.

원래 제품 버전: ASP.NET
원래 KB 번호: 324772

증상

ASP.NET 웹 애플리케이션에 대한 세션 데이터는 InProc 세션 상태 모드에 대해 임의 간격으로 손실된 것으로 보입니다.

원인

IIS 7.0 이상 버전에서 실행되는 애플리케이션의 AppDomain 경우 클래스 또는 Aspnet_wp.exe 프로세스(또는 W3wp.exe 프로세스)가 재활용되면 세션 상태 데이터가 손실됩니다. 일반적으로 는 AppDomain 다음과 같은 몇 가지 요인에 따라 다시 시작됩니다.

  • 다양한 특성(예: memoryLimit 특성)에는 구성 파일의 섹션에 <processModel> 특정 설정이 있습니다.
  • Global.asax 또는 Web.config 파일이 수정되었습니다.
  • Bin 웹 애플리케이션의 디렉터리가 수정되었습니다.
  • 바이러스 검사 소프트웨어가 일부 .config 파일을 터치했습니다.

InProc 세션 모드는 세션 상태가 로컬로 저장됨을 나타냅니다. 즉, InProc 세션 상태 모드를 사용하면 웹 애플리케이션의 에 AppDomain 수명 개체로 저장됩니다. 따라서 IIS에서 실행되는 애플리케이션의 경우 Aspnet_wp.exe(또는 W3wp.exe) 또는 AppDomain 다시 시작할 때 세션 상태가 손실됩니다.

해결 방법

이 문제를 해결하려면 StateServer 또는 SqlServer 세션 상태 모드를 사용할 수 있습니다. ASP.NET 세션 상태 데이터를 저장하기 위한 이러한 다른 방법을 제공합니다. StateServer 및 SqlServer 모드에서는 세션 상태가 웹 애플리케이션의 에 AppDomain 저장되지 않습니다.

참고

요구 사항에 적합한 모드를 결정할 때 각 세션 상태 모드와 관련된 동작 및 문제를 이해하는 것이 중요합니다.

상태

이것은 의도적으로 설계된 동작입니다.

참조

ASP.NET 세션 상태 관리 및 기타 관련 정보에 대한 자세한 내용은 세션 상태를 참조하세요.