세션을 파괴하는 것과 그 값을 제거하는 것의 차이점은 무엇입니까? 이를 보여주는 예를 제공해 주시겠습니까?
이 질문을 검색했지만 전체 답변을 파악하지 못했습니다. 몇 가지 대답은 다음과 같습니다.
Session.Abandon()
세션을 파괴Session.Clear()
모든 값을 제거합니다.
친구가 이렇게 말했습니다.
세션을 지워도 세션이 설정 해제되지는 않지만 사용자 ID는 동일하지만 값은 지워진 상태로 계속 존재합니다.
Abandon은 세션을 완전히 파괴합니다. 즉, 해당 사용자의 세션에 더 많은 값을 저장하기 전에 새 세션을 시작해야합니다.
아래 코드는 작동하며 예외를 발생시키지 않습니다.
Session.Abandon();
Session["tempKey1"] = "tempValue1";
세션을 Abandon ()하면 사용자 (또는 사용자)가 새 SessionId를 받게됩니다.
세션을 테스트 할 때 세션을 중단해도 아무런 변화가 없습니다.
난 그냥 한 차이를 찾을 :
session.Abandon()
제기 Session_End
이벤트를
답변
지우기 -세션 상태 컬렉션에서 모든 키와 값을 제거합니다.
포기 -세션에 저장된 모든 개체를 제거합니다. Abandon 메서드를 명시 적으로 호출하지 않으면 서버는 이러한 개체를 제거하고 세션 시간이 초과되면 세션을 삭제합니다.
또한 Session_End 와 같은 이벤트를 발생 시킵니다.
Session.Clear는 선반에서 모든 책 을 제거하는 것과 비교할 수 있지만 Session.Abandon은 전체 선반을 버리는 것과 비슷 합니다.
당신은 말한다 :
세션을 테스트 할 때 세션을 중단해도 아무런 변화가 없습니다.
이것은 하나의 요청 내에서만 수행하는 동안 정확 합니다 .
다음 요청에서 세션이 달라집니다. 그러나 세션 ID를 재사용 하여 ID가 동일하게 유지 될 수 있습니다 .
Session.Clear를 사용하면 많은 요청에서 동일한 세션을 갖게됩니다.
일반적으로 대부분의 경우 Session.Clear를 사용해야합니다.
사용자가 사이트를 떠날 것이 확실하다면 Session.Abandon을 사용할 수 있습니다.
따라서 차이점으로 돌아가십시오.
- Abandon은 Session_End 요청을 발생시킵니다.
- Clear는 항목을 즉시 제거하고 Abandon은 그렇지 않습니다.
- Abandon은 리소스를 해제하기 위해 가비지 수집을 수행 할 수 있도록 SessionState 개체와 해당 항목을 해제합니다. Clear는 SessionState 및 관련 리소스를 유지합니다.
답변
당신 Abandon()
이 세션 일 때 , 당신 (또는 오히려 사용자)은 (다음 요청에서) 새로운 SessionId를 얻게 될 것입니다. 때 Clear()
세션은, 모든 저장된 값이 제거되지만 세션 ID는 그대로 유지됩니다.
답변
이다 일종의 위의 다양한 반응에 의해 덮여의,하지만 난이 기사를 읽고 처음으로 나는 내 코드에서 사소한 버그로 이끄는 중요한 사실을 놓친 …
Session.Clear()
모든 키의 값을 지우지 만 세션 종료 이벤트가 발생하지 않습니다.
Session.Abandon()
현재 요청의 값을 지우지 않습니다. 다른 페이지가 요청되면 해당 페이지에 대한 값이 사라집니다. 그러나 포기하면 이벤트가 발생합니다.
그래서, 내 경우에는 (그리고 아마도 당신에?), I가 필요합니다 Clear()
다음 Abandon()
.
답변
이 코드는 작동하며 예외를 발생시키지 않습니다.
Session.Abandon(); Session["tempKey1"] = "tempValue1";
Abandon 메서드가 호출되면 현재 Session 개체가 삭제 대기열에 있지만 현재 페이지의 모든 스크립트 명령이 처리 될 때까지 실제로 삭제되지 않기 때문입니다. 즉, Abandon 메서드에 대한 호출과 동일한 페이지에서 세션 개체에 저장된 변수에 액세스 할 수 있지만 이후 웹 페이지에는 액세스 할 수 없습니다.
예를 들어, 다음 스크립트에서 세 번째 행은 Mary 값을 인쇄합니다. 이는 서버가 스크립트 처리를 완료 할 때까지 Session 개체가 파괴되지 않기 때문입니다.
<%
Session.Abandon
Session("MyName") = "Mary"
Reponse.Write(Session("MyName"))
%>
후속 웹 페이지에서 MyName 변수에 액세스하면 비어 있습니다. 이는 이전 예제가 포함 된 페이지가 처리를 완료했을 때 이전 Session 개체로 MyName이 삭제 되었기 때문입니다.
답변
세션을 지우면 거기에 저장된 값이 제거되지만 여전히 새 값을 추가 할 수 있습니다. 세션을 삭제 한 후에는 새 값을 추가 할 수 없습니다.
답변
clear-its 세션 상태 수집에서 키 또는 값을 제거합니다.
포기-세션에서 세션 개체를 제거하거나 삭제했습니다.
답변
Session.Abandon()
전체 세션을 파괴 / 종료합니다.
Session.Clear()
세션 데이터 (즉, 현재 세션의 키와 값)를 제거 / 지우지 만 세션은 살아 있습니다.
Session.Abandon () 메서드와 비교하면 Session.Clear ()는 새 세션을 생성하지 않고 세션의 모든 변수를 NULL로 만듭니다.
세션 ID는 브라우저가 닫히지 않는 한 두 경우 모두 동일하게 유지됩니다.
Session.RemoveAll()
세션 상태 컬렉션에서 모든 키와 값을 제거합니다.
Session.Remove()
세션 상태 컬렉션에서 항목을 삭제합니다.
Session.RemoveAt()
세션 상태 컬렉션에서 지정된 인덱스의 항목을 삭제합니다.
Session.TimeOut()
이 속성은 응용 프로그램의 세션 개체에 할당 된 제한 시간을 지정합니다. (시간은 분 단위로 지정됩니다).
사용자가 제한 시간 내에 페이지를 새로 고치거나 요청하지 않으면 세션이 종료됩니다.
