2011-11-13 2 views
0

SessionState 시간 초과가 발생할 때 웹 페이지를 닫으려고합니다. 내 웹 구성의 코드입니다.ASP.NET SessionState TimeOut 작동하지 않음

<system.web> 
<sessionState timeout="1" mode="InProc"/> 
</system.web> 

테스트 목적으로 1 분으로 설정되었습니다. 는 IS 다음 내 Global.asax에 코드 :

lblSession.Text = "SESSION TIME: " + Session.Timeout.ToString(); 

:

protected void Session_End(object sender, EventArgs e) 
{ 
    Response.Redirect("~/LogOut.aspx"); 
} 

내가 세션 제한 시간을 확인하기 위해 페이지 중 하나에 라벨을 부착,이 Page_Load 이벤트의 코드는 사이트에 들어가서이 페이지로 이동하면 레이블에 세션 시간 : 1이 표시되지만 1 분 후에 LogOut 페이지로 리디렉션되지 않고 현재 페이지가 여전히 완전히 활성화되어 작동 중입니다. 세션이 완료되지 않았 음을 의미합니다. 종료 됨. Visual Studio 2008에서 개발 서버를 통해 작업 중이므로 IIS 설정과 관련된 제안은이 단계에서 적절하지 않은 것으로 보입니다. 도와주세요!

답변

2

HTTP는 요청/응답 프로토콜입니다. 브라우저와 서버 사이에 영구 연결이 없습니다. Session_End의 코드는 아무런 효과가 없습니다. 브라우저에서 아무 것도하지 못하게합니다.

세션 타임 아웃이 만료되기 전에 (클라이언트 측) JavaScript 타이머를 만들고 actively 로그 아웃 페이지를로드해야합니다.

+1

해당 지점에서 Response가 null이므로 코드가 충돌 할 수도 있습니다. –

+0

자바 스크립트 타이머를 만드는 데 도움이 될만한 것이 있습니까? 고맙습니다. –

+1

나는 AJAX 타이머를 사용했다. page_Load에서 세션 시간 초과 값을 밀리 초 단위로 시간을 가져 오기 위해 60000을 곱한 int 변수에 넣은 다음 세션 시간 초과가되기 전에 타이머가 발생하도록 시간 제한에서 2000 밀리 초까지 타이머의 interval 속성을 설정합니다. . LogOut 페이지로 리디렉션되는 Timer_Tick 이벤트가 발생합니다. 그것은 잘 작동합니다. 고맙습니다! –

0

이것은 세션 시간 초과를 테스트하는 올바른 방법이 아닌 것 같습니다. 세션 변수에 무엇인가 넣으십시오. 몇 분 동안 페이지를 건드리지 말고 세션에서 다시 읽으십시오. 세션이 살아 있다면 변수를 볼 수 있어야합니다. 그렇지 않으면 ...하지 않을 것입니다. 즉있을 때마다 -

는 타임 아웃이 발생한 후 내 경험에 http://aspalliance.com/1182_Troubleshooting_Session_Related_Issues_in_ASPNET

+0

감사합니다. 세션 손실을 처리하는 링크를 보았습니다.하지만 내 문제는 세션이 끝날 때 세션이 끝나지 않는 것처럼 보입니다. 페이지는 평소처럼 계속 반응하며 버튼이 반응하여 포스트 백이 발생합니다. 평소 등 –

+0

@ DovMiller, Ondrej가 적절하게 넣었습니다. 간단히 설명하면 Session_End는 "브라우저"에서 전혀 실행되지 않습니다. 세션이 끝날 때마다 서버에서 발생하는 이벤트입니다. 이 시간 동안 클라이언트가 연결되거나 연결되지 않을 수도 있으므로 AFAIK 방법으로 응답을 수행 할 수 없습니다.이 이벤트에서 리디렉션하십시오. 따라서 브라우저가 자동으로 반응하지 않습니다. 앞서 제안한 세션 변수 접근 방식을 시도 할 기회를 얻었습니까? –

1

Session_End은 (클라이언트 측 타이머를 통해 구현 될 수있다) 첫 포스트 백에 호출되는 ... 세션 및 문제 해결 세션에 대해 자세히 알아보십시오. .. 사용자가 방금 브라우저를 닫으면이 이벤트는 결코 호출되지 않을 수 있습니다 (특정 JS 핸들러를 해당 상황에서 다시 게시하기 위해 unload을 만든 경우 제외). 일부 내용

은 다음을 참조하십시오

+0

일부 링크는 저에게 도움이됩니다. –

+0

@DovMiller 당신을 환영합니다 :-) 도움이되는 인정 된 대답으로 upvote/mark를 잊지 마십시오. (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer를 참조하십시오. -작업). – Yahia

관련 문제