[C#] web.config에서 세션 시간 초과를 설정하는 방법

매우 열심히 노력했지만 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.configIIS에서 설정해야합니다.


답변