세션이 끝나면 사용자를 다른 페이지로 리디렉션하려고합니다.세션 종료시 리디렉션하는 방법
이 코드는 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."라는 결과를 가져옵니다. 예외
void Session_End(Object sender, EventArgs E)
{
HttpContext.Current.Response.Redirect("/");
}
어떻게하면 좋을까요?
세션이 끝나면 사용자를 다른 페이지로 리디렉션하려고합니다.세션 종료시 리디렉션하는 방법
이 코드는 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."라는 결과를 가져옵니다. 예외
void Session_End(Object sender, EventArgs E)
{
HttpContext.Current.Response.Redirect("/");
}
어떻게하면 좋을까요?
Session_End
은 내부 타이머를 기반으로 서버에 의해 내부적으로 실행됩니다. 따라서 그 일이 발생하면 HttpRequest
이 연결되지 않습니다. 따라서 Response.Redirect
또는 Server.Transfer
은 의미가 없으며 작동하지 않습니다.
나는 이것에 대한 과거의 해결 방법을 보았지만 한 번도 시도하지는 않았지만 모든 페이지가 상속하는 Base 클래스를 만들어야합니다. 기본 클래스의 OnInit
이이를 추가합니다. 기본 클래스는 UI.Page
을 상속합니다. 기본 클래스 로직을 사용하지 않는다면 좋지 않은 모든 페이지에이 로직을 추가해야합니다. 세션이 만료되면 사용자가 세션이 새로운 것을 잡을 경우
protected override void OnInit(System.EventArgs e)
{
Response.AddHeader("Refresh",Convert.ToString((Session.Timeout * 60) + 5));
if(Session.IsNewSession)
Response.Redirect(“Logout.aspx”);// or another page which you want.
}
페이지은 함께 5 초 후에 갱신해야하며, 당신은 리디렉션합니다.
트리거가 발생하면 사용자 페이지와 어떤 연락도 없으므로 응답이 null입니다. 사용자가 세션을 느슨하게하지 않았는지 확인하려면 자바 스크립트 호출을 수행하십시오. 그것의 까다로운 tho, 각 통화가 세션 업데이트를 다시 트리거 할 수 있기 때문에. – Aristos
당신은 HttpContext.Current가 null 참조 인 이유 인 페이지 요청과 관련이없는 이벤트에 연결하고 있습니다. 특별히 무엇을 원하니? 로그 아웃 기능을 구현 하시겠습니까, 아니면 사용자가 세션 밖에있을 때 감지 할 수 있습니까? 그것들은 서로 다른 답변을 가진 각각 다른 상황이고, 각각은 위의 코드와 다릅니다. –
http://stackoverflow.com/questions/4453365/session-end-in-global-asax-cs-not-firing-using-forms-authentication ... 포럼을 확인하십시오. –