2009-03-25 9 views
0

세션이 만료되었는지 확인하는 데 가장 적합한 이벤트는 무엇입니까? 각 서버 요청을 트랩하려면 노력하고있어 세션이 null 인 경우 다른 페이지로 리디렉션하십시오.ASP.NET 글로벌 이벤트

답변

0

이것은 종종 모든 otehr 클래스에 대한 기본 Page 클래스를 사용하고 Page_Load 메서드에서이를 구현하면 가장 잘 수행됩니다. 새로운 세션이 Session_OnStart 접선에 의해 생성되는 경우

+0

@ck 이것은 실제로 global.asax 일입니다. – eglasius

+0

방금 ​​옵션을 제공하고 있습니다. – cjk

+0

실제로 - OP가 클래스별로 클래스의 페이지로 리디렉션하려는 경우 페이지 이벤트에 추가하는 것이 가장 좋은 방법입니다 (이후이 이벤트를 page_load보다 먼저 추가하겠습니다. 페이지 처리기 processrequest가 시작되기 전에 세션이 준비되어 있습니다. – annakata

1

당신은 확인할 수 있습니다 - http://msdn.microsoft.com/en-us/library/ms178583(VS.80).aspx

당신은 Global.asax에 파일에 Session_OnStart라는 이름의 서브 루틴을 추가하여 Session_OnStart 이벤트를 처리 할 수 ​​있습니다. Session_OnStart 서브 루틴 은 요청이 새로운 세션을 시작하면 요청의 시작 부분에 실행됩니다. A 요청이 이루어져서 SessionID 값을 포함하지 않거나 요청에 포함 된 속성의 SessionID가 만료 된 세션을 참조하는 경우 새 세션이 시작됩니다.

사용자가 방금 도착했거나 세션이 만료되었는지 여부에 관계없이 새 세션을 만들 때이를 효과적으로 알 수 있습니다.

두 시나리오를 확실하게 구분하는 것은 어렵습니다. 난 당신이 세션 쿠키 또는 세션 쿠키 (cookieless)에 포함 된 세션 ID를 보류하려고 할 수있을 것 같아요,하지만 당신은 위의 이벤트에 도착하기 전에 확인하고 나중에 요청이 있는지 확인해야합니다 원래 세션 ID. 쿠키가없는 버전의 세션 ID를 얻을 수 있는지 확인하십시오. asp.net에서 제공하는 URL에서 제거되므로 수명주기 초기에 확인할 수 있을지 확실하지 않습니다.

0

Page 클래스를 상속 한 BasePage 클래스를 사용하십시오. 모든 aspx 페이지가 해당 BasePage 클래스를 상속 받도록하십시오. BasePage 클래스에서 OnInit 이벤트를 재정 의하여 Session 또는 Cookie를 확인하고 사용자를 로그인 페이지로 리디렉션 할 수 있습니다.
구현하기 쉽고 사용하기 쉽기 때문에 모든 광산 webforms 앱에이 방법을 사용합니다.