2009-11-12 3 views
5

내 프로젝트에 문제가 있습니다. 내 웹 사이트에는 관리자 패널이 있습니다. 사람들은 사용자 이름으로 로그인 할 수 있으며 암호는 웹 사이트 내용을 편집 할 수 있습니다. 사용자가 콘텐츠를 입력하는 데 최대 30 ~ 40 분이 걸릴 수 있지만 세션 시간 제한은 20 분 후에 만료됩니다.세션 시간 초과를 20 분 이상으로 설정하는 방법?

<authentication mode="Windows"/> 
<sessionState timeout="60" /> 

과 같은 :

나는 예를 들어, web.config이를 구성하려고

<system.web> 
    <sessionState timeout="60"></sessionState> 
</system.web> 

또한 그렇게 내 형태로 시도 :

if (ds.Tables["LOG"].Rows.Count > 0)   
{ 
    Session["IsLoggedIn"] = "true";   
    Session.Timeout = 60;    
    Response.Redirect("Default.aspx");  
}   
else  
{     
    Label1.Text = "Username/Password is wrong!!";  
} 

위의 해결 방법 중 아무 것도 작동하지 않았습니다. 나는 각기 따로 따로 시도했지만, 세션은 20 분 후에 만료된다.

+0

가 정말 귀하의 질문에 관련되지 않음,하지만 당신은 실패한 로그인에 더 멋진 오류 메시지를 고려해야합니다

을 참조하십시오. – Brandon

+0

시간 제한이 중요하지 않도록 앱을 수정해야합니다. 사용자가 콘텐츠를 제출하고 다시 로그인하라는 메시지가 표시되며 콘텐츠가 손실되지 않습니다. 타임 아웃을 사용하려고하면 오랫동안 누군가를 공격 할 수 있습니다. – RichieHindle

+0

터키인 brandon에서 더 나은 오류 메시지를 작성했습니다. 걱정하지 마십시오. –

답변

12

또 다른 힌트는 IIS 설정을 살펴 보는 것입니다. 타임 아웃을 변경해야 할 때 서버 측에서 변경해야했습니다. 응용 프로그램 풀의 유휴 시간 제한 설정을 확인하십시오. 사이트가 유휴 상태 인 경우 (기본값은 5 분이라고 생각하는 경우) 서버 리소스를 절약하기 위해 응용 프로그램 풀이 종료됩니다. 이렇게하면 세션도 종료됩니다.

응용 프로그램 풀에 대한 유휴 시간 제한을 늘려보십시오. 이것이 도움이되는지 확인하십시오. 당신이 공유 호스팅 환경에있는 경우

IIS»디렉토리»구성»옵션

및 AppPool을»등록

은 분명히 당신이 가장 가능성이 조정할 수 없습니다.

+0

불행히도 나는 공유 호스팅 Qubar에 있습니다. –

+1

이 상황에 부딪혔을 때 IIS 세션 시간 제한이 web.config에 정의 된 것보다 항상 우세한 것처럼 보였습니다. 우리는 IIS를 60 분으로 늘려야했습니다. 공유 공급자와 협력하여 세션 시간 제한에 대해 설정 한 내용과 수행 할 수있는 작업이 있는지 확인하십시오. – BStruthers

+0

고마워요 !!! – Arpita

1

시간 초과되는 세션이 확실합니까? 또한 인증 시간 초과로 인해 발생할 수 있습니다 (즉, 인증 쿠키는 20 분 후에 만료되도록 설정 됨). 세션 시간 초과 및 인증 시간 초과가 모두 동일한 값으로 설정되어 있는지 확인하십시오.

5

"InProc"(처리 중)의 기본 세션 상태 모드를 그대로 사용하면 세션 상태 데이터가 매우 취약하여 AppPool이 재활용 될 때마다 손실됩니다.

out-of-process로 실행되므로 AppPool 재활용에 영향을받지 않는 다른 기본 제공 세션 상태 모드를 사용하는 것이 좋습니다. "StateServer"모드 (별도의 프로세스로 메모리에서 실행)와 "SqlServer"모드 (SQL Server DB에 저장된 상태 데이터)입니다.

특히 세션 시간 초과가 길어야 세션 데이터를 더욱 강력하게 만들려면 이러한 out-of-process 세션 상태 모드 중 하나를 사용하는 것이 좋습니다. 이 질문은 귀하의 세션이 조기에 시간 초과되는 이유에 대한 답변이 아니지만 솔루션의 일부가 될 것입니다.

다양한 세션 상태 모드는 모두 견고성, 메모리 요구 사항, 확장 성 및 성능 측면에서 강점과 약점이 있으므로 응용 프로그램에 적합한 선택을 식별하기 위해 이들에 익숙해 져야합니다.

부수적으로, 항상 데이터가 세션에 들어가야하는지 여부를 고려하십시오. 일반적으로 동일한 페이지에서 다시 게시간에 데이터가 필요할 때 ViewState를 사용하는 것이 데이터 양이 너무 많지 않다면 제공하는 것이 좋습니다. Session을 전혀 사용하지 않는 ASP.NET 응용 프로그램을 개발하거나 아주 조심스럽게 사용하는 것이 가능하며 일반적으로 Session을 사용하지 않을 경우 훨씬 직관적으로 작동합니다. 브라우저의 뒤로 버튼.귀하의 DB는 귀하의 데이터를 유지하기 위해 존재하므로, 그것을 사용하는 것에 대해 부끄러워하지 마십시오. 세션을 사용하여 페이지간에 테이블 또는 데이터 집합을 전달하는 경우 실제로 필요한지 여부를 고려하십시오. 쿼리 문자열을 통해 매개 변수를 전달한 다음 페이지가 요청 될 때 매개 변수를 사용하여 DB에서 데이터를 가져올 수 있습니까? MSDN Session State Modes

+0

감사합니다 !!!!!! 이 사고를 우연히보고 뭔가 완전히 다른 것을 찾아보고 "InProc"이 소개했지만 문제를 해결하는 방법을 찾지 못했습니다. 다시 한 번 감사드립니다. –

관련 문제