문제

에 의해 추천 ASP.NET 팀 캐시를 사용하는 대신에 우리는 멈춰 사용하여 세션에서 작동으로 웹 양식을 모델링합니다.그래서 우리는 일반적으로 세션을 꺼집니다.config

<sessionState mode="Off" />

그러나,지금은 때 나 테스트 ASP.NET MVC 응용 프로그램이 설정 오류가 발생에서 클래스 SessionStateTempDataProvider 내부 mvc 프레임워크,그것을 나에게 물을 켜 세션 상태았다,그것은했다.고 소스에서 사용 세션:

// line 20 in SessionStateTempDataProvider.cs
Dictionary<string, object> tempDataDictionary = 
httpContext.Session[TempDataSessionStateKey] as Dictionary<string, object>; 

그래서 그들은 왜 사용하여 세션을까요?나는 무엇이 없는가?

========================================================

편집 죄송하지 않았다는 의미에 대한 이 게시물에 대한 토론 세션을 대캐시이지만,오히려서의 컨텍스트 ASP.NET MVC 는데 왜 이 세션은 여기에서 사용됩니다.이 블로그 게시물 또한 스코트 Watermasysk 언급을 해제하는 세션이 좋은 방법,그래서 나는 단지 이유가 궁금 설정해야하에 그것을 사용하 MVC 에서 여기에.

도움이 되었습니까?

해결책

세션은 TempData 상점에 사용됩니다. TempData는 특정 사용자의 다음 요청까지 지속될 매우 제한된 세션 상태입니다. (편집하다 MVC 2+에서는 다음으로 읽을 때까지 지속됩니다.) TempData의 목적은 데이터를 저장 한 다음 리디렉션을 수행하고 방금 리디렉션 된 작업에 저장된 데이터를 사용할 수 있도록하는 것입니다.

TempData 스토어에 세션을 사용한다는 것은 이미 처리 된 세션을 처리 한 모든 분산 캐싱 시스템이 TempData에서 작동한다는 것을 의미합니다. TempData가 수행 할 때 직접 세션 사용을 피하는 것은 몇 가지 장점이 있습니다. 하나는 세션을 직접 정리할 필요가 없다는 것입니다. Tempdata는 자체적으로 "만료"됩니다.

다른 팁

ASP.NET 팀이 세션 대신 캐시를 사용하는 것을 권장합니다.

@ray247, 이것에 대한 참조를 제공 할 수 있습니까? 세션과 캐시는 본질적으로 다르며 응용 프로그램 요구 사항에 따라 사용해야합니다. 예를 들어 사용자 특정 데이터를 캐시에 저장하면 바람직하지 않은 동작이 발생할 수 있습니다. 물론 세션 사용을 피하고 싶다면 자신의 구현을 제공 할 수 있습니다. itempdataprovider 상호 작용.

흠 ... 무거운 물체 또는 비교적 거의 액세스되지 않은 객체의 지속에 대해 읽었을 수도 있습니다. 캐시에 넣는 것이 확실히 좋습니다. 세션에 넣으십시오.

세션은 올바르게 사용하는 경우 세션이 악하지 않습니다.

는 추가적인 생각했다.TempData 는 자신의 목적 MS 알고있을 것이다 다른 학교의 생각을 존중하 TempData 지속적인 메커니즘이 있습니다.그래서,기본적으로 그들이 만들어 지속적인 저장소 SessionState.하지만 디자인은 아직도 매우 유연합니다.의 필요에 따라 프로젝트 관리는 그것을 당신은 당신의 자신을 만들 수 있습 tempdata 공급자에 맞게 특정 요구사항을 확인하세요.

여기에 몇 가지 포인터를 자원 TempData

여기에 몇 가지 추가적인 개선을 구현 TempData TempData 개선

여기에는 대체를 사용하여 구현하 MS 속도 Distributed Caching.속도 TempData 공급자

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top