2013-10-01 5 views
4

asp.net을 사용하고 있으며 서버에 대한 모든 요청에 ​​대해 웹 응용 프로그램에서 $ .ajax 호출을 받았습니다.ajax 호출에서 세션이 만료되었는지 확인하는 방법은 무엇입니까?

사용자를 세션 종료시 로그인 페이지로 리디렉션하려고합니다.

<authentication mode="Forms"> 
    <forms name=".CovertixAuthenticated" defaultUrl="Default.aspx" loginUrl="LoginPage.aspx" slidingExpiration="true" cookieless="UseCookies" protection="All" timeout="1"/> 
</authentication> 


    <sessionState mode="InProc" cookieless="UseCookies" timeout="1"/> 

나는 .ajaxError에서 확인하십시오 : 내 Web.config의에서

나는 설정

$(document).ajaxError(function(xhr, props) { 
    if (props.status == 401) { 
     var ParentUrl = encodeURIComponent(window.parent.location.href); 
     //alert(getLoginPage()); 
     document.location.href = getLoginPage() + "?ReturnUrl=" + ParentUrl; 
    } 
}); 

문제 내가 얻을 수 있습니다 응답 코드 = 500 (내부 서버 오류)

ajax 호출로 세션이 만료되었는지 확인하는 가장 좋은 방법은 무엇입니까? 또는 세션이 끝나면 자동으로 로그인 페이지로 사용자를 리디렉션 할 수 있습니까?

+0

500은 처리되지 않은 서버의 실제 오류를 의미합니다. – Bernhard

+0

당신이 계획을 세우는 것이 좋은 것 같아서 문제가 서버에서 정확히 무엇인지 식별해야합니다. 일반적인 문제는 처리기에서 세션을 사용하도록 설정하지 않아서 500 오류가 발생할 수 있습니다. 디버그 모드를 사용하려고 시도하거나 디버거를 사용하여 단계별로 확인하십시오. –

+0

Ajax 호출은 세션을 계속 유지하므로 어떤 유형의 주기적 폴링이 있으면 세션이 아마도 시간 초과되지 않습니다. – Archer

답변

0

도움을 주셔서 감사합니다.

난 그냥 내 Web.config를 추가하는 것을 잊었다 : 예상대로

<location path="MyPage.aspx"> 
    <system.web> 
     <authorization> 
     <deny users="?"/> 
     </authorization> 
    </system.web> 
    </location> 

가 지금은 401를 얻을!

관련 문제