2012-06-13 4 views
3

게시물이 다시 게시되는 동안 세션이 만료되면 사용자를 홈 페이지로 리디렉션하려고합니다. 양식 시간 초과가 발생하면 사용자는 로그인 페이지로 이동합니다.리디렉션 세션 시간 초과가 만료 된 페이지

세션 시간 제한 = 20, 양식 시간 제한 =

2880은 내가 Global.asax에 다음 코드를 시도했지만 작동하지 않고함으로써 Application_Error가 발생합니다 ("응답이 컨텍스트에서 사용할 수 없습니다.").

Sub Session_End(ByVal sender As Object, ByVal e As EventArgs) 
    ' Fires when the session ends 
    Response.Redirect("~/HomePage.aspx") 
End Sub 
+1

무엇이 오류입니까? –

+0

@MajoB 오류는 "응답을이 컨텍스트에서 사용할 수 없습니다."입니다. – TroyS

답변

1

그것은 당신의 Web.config

<forms name="WhateverYourAuthNameIs" 
     loginUrl="~/HomePage.aspx" 
     defaultUrl="~/Default.aspx" 
     protection="All" path="/" 
     cookieless="AutoDetect"/> 

의 속성입니다.

+0

세션 시간 초과시 HomePage.aspx로 새로 고침하거나 직접 보내고 Form timeout에 LoginPage.aspx로 리디렉션하고 싶습니다. 그래서이 문제를 처리 할 수 ​​있을지 모르겠습니다. – TroyS

+0

왜 동기화되지 않았습니까? –

+0

세션 시간 제한 = 20 및 양식 시간 초과 = 20으로 설정하면 로그인으로 다시 리디렉션됩니다. 세션 변수가 덤프되면 다시 로그인하지 못하게하고 싶습니다. – TroyS

0

당신이 Server.Transfer 또는 Respose.Redirect는 다음 각 페이지의 Page_Load 이벤트에서 일부 세션 변수를 확인할 수 있습니다 사용하지 못할 경우. 그리고이 세션 변수가 null이면 특정 페이지로 리디렉션됩니다. 코드 중복을 피하기 위해 기본 페이지를 만들 수 있습니다.

+0

@MagoB 고마워요.하지만 다음과 같은 오류가 있습니다. "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." – TroyS

+0

이 기능을 사용하려는 페이지의 범위에 따라 Global.ascx에서 항상 Application_BeginRequest를 사용할 수 있습니다. 분명히 어떤 페이지가 요청되고 있는지 확인하고 HomePage.aspx가 아닌지 확인하십시오. 그렇지 않으면 무한 루프가됩니다. – freefaller

+0

세션 변수 방법을 시도하고 어떻게 작동하는지 봅니다. 감사합니다. – TroyS

2

Session_End는 브라우저에서 시작하지 않습니다 (이론적으로 브라우저에서 응답을 보내면 세션을 20 분 연장해야하기 때문에) Response 개체의 개념은 이해가되지 않습니다. 내가 볼 수

옵션 만합니다 ... window.setTimeout 기능을 이용하여 클라이언트 측 스크립트 (JavaScript)를 ... (안된) 같은 일종의을하는 것입니다

<body onload="window.setTimeout(function(){document.location.href='/Home.aspx';},72000000);"> 

UPDATE

요청을 다시 읽은 경우 요구 사항이 약간 모호합니다. 웹 페이지가 사용자 개입없이 20 분이 지나면 자동으로 리디렉션되어야한다는 요구 사항이있는 경우 내 대답에서이를 해결합니다.

그러나 사용자가 이 서버에 다른 요청을 보내면이 20 분 후에 홈페이지로 리디렉션 될 가능성이 더 높습니다. 어떤 경우에, MajoB의 대답은 좋은 것입니다. 만료들이 loginUrl로 설정되어있는 페이지로 전송됩니다 발생하면

+0

업데이트에서 두 번째 문장이 올 바릅니다. 고맙습니다. 나는 MajoB의 접근 방식을 시도 할 것이다. – TroyS

관련 문제