2011-02-24 4 views
1

분명히 ASP.NET의 페이지 수명주기에 익숙하지 않습니다. 이것은 내가 페이지를 떠난 후에 Session 변수를 처리하고자 할 때 명백 해졌다.ASP.NET 페이지 수명주기

protected void Page_Unload(object sender, EventArgs e) 
    { 
     Session.Remove("ServiceSearch"); 
    } 

내가 모르는 것은 내가로부터 페이지로 이동하면이 호출 할 것입니다 : 내가 가장 적합한 만들 었는지했다. 내가하고 싶은 일은 사용자가 페이지를 떠날 때마다 Session 변수를 처분하는 것이다. 어떻게해야합니까?

답변

3

Page_Unload은 구문 분석 및 페이지 생성 후 처리되기 바로 전에 Page 개체를 언로드하는 것을 말합니다. 그것은 페이지를 떠나는 것과 관련이 없습니다. @ 닉 (Nick)이 말했듯이, 모든 출구 경로를 제어하는 ​​것을 제외하고는 말할 수있는 좋은 방법이 없습니다. 사용자가 다시 방문하거나 google.com으로 이동 한 다음 브라우저에서 방금 보낸 URL에 붙여 넣을 때 사용자가 제어 할 수 없기 때문에 제어 할 수 없습니다.

Session 변수를 실수로 다시 사용하지 않으려면 더 좋은 해결책은 페이지를 입력 할 때마다 Session 변수를 덮어 쓰고 세션이 만료되면 고유 한 시간에 세션과 함께 처리되도록하는 것입니다.

0

사용자가 링크를 통해 페이지를 떠나는 경우 동일한 페이지의 메소드에 연결되는 링크 버튼을 만들 수 있습니다. 이 메서드는 세션을 제거하고 리디렉션을 수행합니다.

더 나은 해결책이 있기를 바랍니다. 내 이해에서, 세션 코드를 제거하려면 페이지를 다시로드해야하기 때문에 귀하의 경우에 사용할 페이지 이벤트가 없습니다. 사용자가 링크를 통해 나가면 페이지가 다시로드되지 않습니다.

자바 스크립트로 처리 할 수도 있습니다. 나는 떠나고 싶었던 상황에 있었고 몇몇 BS에 대한 팝업 상자가있다. 세션을 제거하기 위해 AJAX를 실행하는 데 같은 기술을 사용할 수 있습니다.

2

세션 데이터는 페이지 수명 이후의 데이터를 저장하는 데 유용합니다. 페이지의 수명을 넘어서 저장하지 않으려는 경우 세션 데이터는 여기에 적합하지 않습니다.

0

PHP 로그인과 비슷한 상황에 직면했습니다. 로그인 한 사용자가 앞뒤로 화살표를 사용하여 로그인 페이지를 사용할 수 있습니다. 그래서, 나는 단순히 추가

session_start(); 
session_unset(); 
session_destroy(); 

를 로그인 페이지의 HTML 스크립트 위의 로그인 한 사용자가 다시 화살표가 붙은 경우 것으로, 세션이 설정되지 않은 파괴 모두 그래서. 앞으로 화살표를 클릭하면 로그인 페이지 (사용자 로그인 자격 증명 요청)로 연결됩니다. 본질적으로 사용자는 화살표로 돌아 가면 언제든지 로그 아웃됩니다! 희망이 도움이됩니다!

알프레드

관련 문제