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


179

매우 열심히 노력했지만 ASP.Net 웹 응용 프로그램의 프로세스 내 세션에 세션 시간 초과 값을 설정하는 방법에 대한 솔루션을 찾을 수 없습니다.

VSTS 2008 + .Net 3.5 + C #을 사용하고 있습니다. 다음은 시간 초과를 1 분으로 설정하기 위해 직접 작성한 것입니다. 맞습니까?

나는 system.web 섹션에 썼다. web.config

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

5
시간 초과를 정의하는 방법이 정확합니다. 문제가 있습니까?
Darin Dimitrov

7
이는 시작 후 1 분이 아니라 1 분 동안 활동이 없으면 만료됨을 의미합니까? 내 생각 에이 질문을하고 시간 초과를 올바르게 입력하면 작동 방식이 잘못 될 수 있습니다.
Ivan Zlatanov

1
비활성 시간을 설정해야합니다. 필요한 것입니다. 고마워 Ivan!
George2

롤! 시간 제한을 1 분으로 설정하지 않는 것이 좋습니다. 그것은 유용성을 죽일 것입니다!
Brian McCarthy

3
짧은 시간 초과 기간이 필요한지 완전히 이해합니다. 필자의 경우 세션 시간이 초과되고 사용자가 다시 방문하면 어떻게 반응하는지 사이트의 유용성을 테스트하는 것입니다. 이 세션 제한 시간이 빨리 발생하지 않는 한 또한 디버깅하는 동안하는지 테스트하기 어렵다
브렛 웨버

답변:


323

제한 시간을 20 분으로 설정하려면 다음과 같이 사용하십시오.

    <configuration>
      <system.web>
         <sessionState timeout="20"></sessionState>
      </system.web>
    </configuration>

16
20 분? (timeout = "20")
Muhammad Awais

21
Config는 시간을 분 단위로 표시하므로 20 분
Wolfwyrd

50

당신이에 설정하는 값 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에서 제공하는 역할 및 멤버쉽 클래스를 사용하십시오 . 사용하려는 일반 세션 기반 인증보다 훨씬 안정적인 양식 기반 인증을 제공합니다.


유용한 조언 ... Response.Write (Session.SessionID);로 테스트하기 전에 세션 변수를 먼저 설정하십시오. 그렇지 않으면 새로 고칠 때마다 새 ID로 새로 고쳐집니다.
크리스 카티 냐니

1

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.
    }
}

0

이것을 다음에서 사용하십시오 web.config:

<sessionState 

  timeout="20" 
/>

30
나열한 대부분의 속성이 필요하지 않습니다 timeout. stateConnectionString그리고 sqlConnectionString때 무시됩니다 mode="InProc",와의 값 mode과는 cookieless기본값으로 설정됩니다. 그래서 이것은 정말로 Wolfwyrd의 대답으로 증류됩니다.
arcain

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.