2010-12-09 4 views
1

내 세션 시간 제한 코드를 수정하는 중이고 재미있는 문제가 발생했습니다. 나는 Session.IsNewSession이 참이고 세션 쿠키가 이미 존재할 때 타임 아웃을했다고 가정하기 위해 herehere을 추천했습니다. 여러 게시물에 따르면 시간 초과가 발생했음을 나타내는 기호입니다. 사용자가 로그인하기 전에 내 홈 페이지에있는 이러한 모든 검사 (시간 초과 및 로그 아웃 상황에서이 페이지로 리디렉션 됨).ASP.NET : Response.Redirect()가 현재 세션을 종료합니까?

그렇다고 가정 해 봅시다. 사용자가 응용 프로그램에서 로그 아웃을 클릭하면, 내가 필요한 데이터베이스 코드가 세션을 종료 실행, 나는 이것을 실행

내 홈페이지에 즉시 발견 무엇
//abandon session 
Global.Session.Abandon(); 

//redirect 
Response.Redirect(FormsAuthentication.LoginUrl, false); 

, 내가 세션 시간 초과 검사를 수행하고있을 때, Session.IsNewSession이 사실이었고 결국에는 세션 시간 초과가 있다고 생각하는 논리로 이어졌습니다. 분명히 그것은 아니었다. 사용자가 로그 아웃을 클릭했습니다. 내 전역 파일에서 Session_End에 중단 점을 넣음으로써 사용자가 로그 오프 할 때 Response.Redirect() 문을 수행 한 후에 Session_End가 시작된다는 것을 알 수있었습니다.

그런 일이 일어날 지 궁금한가요? 원래는 Session.Abandon()과 관련이 있다고 생각했지만 Session_End가 실행되지 않는 것으로 보입니다. 어떤 아이디어?

감사합니다.

답변

2

Session_End 이벤트는 현재 요청이 완료된 후에 만 ​​발생합니다. 리디렉션은 요청의 끝이므로 해당 시간에 이벤트가 시작됩니다. 리디렉션 자체는 현재 세션을 종료하지 않습니다.

+0

Session.Abandon()을 말하기 때문에 요청 중에 세션이 종료되었다고 가정합니다. –

+0

예, 포기 통화로 끝내야합니다. –

관련 문제