2011-03-16 4 views
1

나는 차이점을 알고 싶습니다.asp.net/c#의 세션

Session.clear();

Session.Abandon();

Session.RemoveAll();

내 세션 로그 아웃에 어려움을 겪고 있다고 설명하십시오.

이 예상

+0

[ASP.NET에서는 Session.Abandon() 대신 Session.Clear()를 사용해야합니까?]] (http://stackoverflow.com/questions/347377/in-asp-net-when) -should-i-use-session-clear-over-session-abandon) – balexandre

+0

대답은 너무 기술적이며 실용적인 측면은 session.clear()를 사용해야 할 때를 의미하지 않습니다. 어떤 상황에서 세션을 사용해야합니까? .abandon() 및 session.removeall(). 정의를 내리는 것만으로는 누구에게도 불쾌감을주지 않는 대답으로 간주되지 않습니다. 우리는 또한 사용자가 초보자이고 답이 얼마나 맑은 지 고려해야합니다. 유사점을 지적 해 주신 것에 대해 감사드립니다. –

+4

이것은 프로그래머를위한 사이트입니다. 기술 답변을 이해할 수 없으면 이것이 귀하를위한 장소가 아닐 수도 있습니다. 중복으로 투표하기 위해 투표. –

답변

3

Session.Clear()은 Object (값)의 모든 콘텐츠를 제거합니다. 동일한 키를 가진 세션이 아직 살아 있습니다.

Session.Abandon()은 세션을 파괴하고 Session_OnEnd 이벤트가 트리거됩니다. 이것을 사용하면 세션을 잃고 새 세션 키를 받게됩니다.

Session.RemoveAll() 지우기 같은()이 메소드는 세션 객체의 내용 컬렉션에 추가 된 항목을 모두 삭제 "로그 아웃"이것을 사용하는 것이 좋습니다.

+0

고맙습니다. 왜 로그 아웃 할 때 새로운 세션 키가 필요한지 말할만큼 친절하니? –

+0

그래서 logout에서 session.removeall()을 사용하면 다음에 로그인 할 수 없습니까? –

+0

세션 상태 개체와 해당 항목을 서버에서 해제하므로 가비지 수집 될 수 있습니다. –

0

지우기를 주셔서 감사합니다()에서 removeAll()는 같은 일을 수행 세션 변수를 제거 하지만 메모리에 현재 세션을 유지한다. 반면, Abandon()은 현재 세션을 종료합니다.

+0

세션 변수를 제거하고 현재 세션을 메모리에 유지하면 무엇을 의미합니까? 세션을 제거하는 것과 같지 않은 세션 변수를 제거합니까? 자세히 설명해 주시겠습니까? –

+1

같은 것은 아닙니다. 세션을 버킷으로, 세션 변수를 버킷의 항목으로 생각하십시오. 지우기는 버킷이 아닌 버킷의 항목 만 제거합니다. 포기하면 양동이가 제거됩니다. –

+0

@Greg thats 내가 생각할 수있는 가장 좋은 설명 중 하나! –