매우 열심히 노력했지만 ASP.Net 웹 응용 프로그램의 프로세스 내 세션에 세션 시간 초과 값을 설정하는 방법에 대한 솔루션을 찾을 수 없습니다.
VSTS 2008 + .Net 3.5 + C #을 사용하고 있습니다. 다음은 시간 초과를 1 분으로 설정하기 위해 직접 작성한 것입니다. 맞습니까?
나는 system.web 섹션에 썼다. web.config
<sessionState timeout="1" mode="InProc" />
답변
제한 시간을 20 분으로 설정하려면 다음과 같이 사용하십시오.
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
답변
당신이에 설정하는 값 timeout
속성은 세션 시간 초과 값을 설정하는 올바른 방법의 하나입니다.
이 timeout
속성은 세션이 중단되기 전에 유휴 상태 일 수있는 시간 (분)을 지정합니다. 이 속성의 기본값은 20입니다.
이 속성에 값 1을 지정하면 유휴 후 1 분 안에 세션이 중단되도록 설정했습니다.
이를 테스트하려면 간단한 aspx 페이지를 만들고 Page_Load 이벤트에이 코드를 작성하십시오.
Response.Write(Session.SessionID);
브라우저를 열고이 페이지로 이동하십시오. 세션 ID가 인쇄됩니다. 1 분 정도 기다린 다음 새로 고침을 누르십시오. 세션 ID가 변경됩니다.
내 추측이 맞다면 세션 시간이 초과 되 자마자 사용자가 로그 아웃하도록 할 수 있습니다. 이를 위해 사용자 자격 증명을 확인하고 다음과 같은 세션 변수를 만드는 로그인 페이지를 준비 할 수 있습니다.
Session["UserId"] = 1;
이제이 페이지 에서이 변수에 대해 모든 페이지를 확인해야합니다.
if(Session["UserId"] == null)
Response.Redirect("login.aspx");
이것이 어떻게 작동하는지에 대한 간단한 예입니다.
그러나 프로덕션 품질의 안전한 앱을 만들려면 ASP.NET에서 제공하는 역할 및 멤버쉽 클래스를 사용하십시오 . 사용하려는 일반 세션 기반 인증보다 훨씬 안정적인 양식 기반 인증을 제공합니다.
답변
MVC를 사용하는 경우 Views 디렉토리의 web.config가 아니라 웹 응용 프로그램의 루트 디렉토리에있는 web.config 파일에이 파일을 넣습니다. George2가 자신의 질문에 언급 한 것처럼 “web.config의 system.web 섹션에 썼다”는 것이 아니라 system.web 노드에도 있어야합니다.
시간 종료 매개 변수 값은 분을 나타냅니다.
sessionState 요소에 설정할 수있는 다른 속성이 있습니다. 여기에서 정보를 찾을 수 있습니다. docs.microsoft.com sessionState
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
그런 다음 다음 방법을 추가하여 Global.asax 파일에서 새 세션의 시작을 잡을 수 있습니다.
void Session_Start(object sender, EventArgs e)
{
if (Session.IsNewSession)
{
//do things that need to happen
//when a new session starts.
}
}
답변
이것을 다음에서 사용하십시오 web.config
:
<sessionState
timeout="20"
/>
답변
에서 작동하지 않는 경우 web.config
IIS에서 설정해야합니다.