ASP.NET의 세션 시간 초과


163

IIS 6.0에서 ASP.NET 2.0 응용 프로그램을 실행하고 있습니다. 세션 시간 초과가 기본 20 분이 아닌 60 분이 되길 원합니다. 나는 다음을 수행했다

  1. 설정 <sessionState timeout="60"></sessionState> 에서 web.config.
  2. IIS 관리자 / 웹 사이트 속성 /ASP.NET 구성 설정에서 세션 시간 초과를 60 분으로 설정하십시오.
  3. 응용 프로그램 풀 속성 / 성능에서 유휴 시간 제한을 60 분으로 설정하십시오.

여전히 20 분에 세션 시간 초과가 발생합니다. 내가해야 할 다른 일이 있습니까?


1
20 분 측정 방법에 대한 정보를 제공하십시오. 20 분이 세션 시간 초과이고 다른 종류가 아닌지 확인하십시오.
John Saunders

11
upvote에 / downvote 화살표 근처의 체크 표시를 사용하여 승인으로 품질 대답을 표시하십시오
브라이언 웹스터

3
8 년이 지난 후에도 정답은 인정되지 않습니다.
Nathan

IIS 관리자 / 웹 사이트 속성 /ASP.NET 구성 설정의 의미를 명확히하십시오. IIS에서 무엇을 변경 했습니까?
niico

답변:


275

양식 인증을 사용하고 있습니까?

양식 인증은 시간 초과 (기본적으로 30 분)에 고유 한 값을 사용합니다. 양식 인증 시간 초과는 세션이 계속 활성화 된 상태에서 사용자를 로그인 페이지로 보냅니다. 세션 시간이 초과 될 때 앱이 제공하는 동작처럼 보일 수 있습니다.

<system.web>
    <authentication mode="Forms">
          <forms timeout="50"/>
    </authentication>

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

양식 시간 초과를 세션 시간 초과보다 적은 것으로 설정하면 세션 데이터를 잃지 않고 다시 로그인 할 수있는 창이 사용자에게 제공 될 수 있습니다.


@ 깨지지 않는 분.
Word 재정렬 자

44

web.config 또는 IIS에 대해 모르겠습니다. 하지만 C # 코드 에서처럼 할 수 있다고 생각합니다.

Session.Timeout = 60; // 60 is number of minutes

22
현재 세션의 시간 제한 만 조정합니까? 아니면 전체 응용 프로그램의 시간 초과를 조정합니까?
Johncl

2
설명서의 아무것도 설정 Session.Timeout이 web.config 또는 IIS를 사용하는 것과 다르다는 것을 나타내지 않으므로 전체 응용 프로그램에 대한 것으로 가정합니다.
Drasive

@Drasive가 옳다고 생각하지만 적어도 2 개의 분리 된 연결된 클라이언트가 서버에 의해 증명하고 유휴 세션 시간 초과를 확인해야합니다.
QMaster

42

web.config 파일에서 다음 코드 블록을 사용하십시오. 여기서 기본 세션 시간 초과는 80 분입니다.

<system.web>
 <sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>

팝업 경고 메시지와 함께 세션 시간 초과에 대해 다음 링크를 사용하십시오.

세션 시간 초과 예

참고 : 위의 예제는 devexpress 팝업 컨트롤로 수행되므로 devexpress 팝업 컨트롤을 일반 팝업 컨트롤로 사용자 정의 / 교체해야합니다. devexpress를 사용하는 경우 사용자 정의 할 필요가 없습니다


쿠키리스 거짓?
Kiquenet

3
@Kiquenet, cookieless를 true로 설정하면 sessionId가 보안 위험이 높은 URL에 포함됩니다. ASP.NET 프레임 워크는 URL에 고유 한 ID를 삽입합니다. 쿠키를 비활성화하거나 cookieless 속성을 true로 설정하여이를 확인할 수 있습니다. MSDN에 따르면 기본적으로 SessionID 값은 브라우저에서 만료되지 않는 세션 쿠키에 저장되지만 cookieless = "true"를 지정하면 ASP.NET은 고유 한 세션 ID를 페이지의 URL에 자동으로 삽입하여 쿠키없는 세션 상태를 유지합니다 .
Hamza Khanzada 1

8

machine.config에 영향을 줄 수있는 것이 있습니까? web.config에서 세션 시간 초과를 설정하면 IIS 또는 machine.config의 설정이 재정의되지만 응용 프로그램의 하위 폴더에 web.config 파일이 있으면 해당 설정이 응용 프로그램의 루트에있는 설정보다 우선합니다.

또한 올바르게 기억하면 IIS의 시간 초과가 .aspx가 아닌 .asp 페이지에만 영향을 미칩니다. web.config의 세션 코드가 정확합니까? 다음과 같이 보일 것입니다 :

<sessionState
    mode="InProc"
    stateConnectionString="tcpip=127.0.0.1:42424"
    stateNetworkTimeout="60"
    sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
    cookieless="false"
    timeout="60"
/>

8

내 상황에서는 응용 프로그램 풀이었습니다. xx 분 동안 유휴 상태 일 때 다시 시작되도록 설정되어 있습니다. 다시 시작하지 않도록 설정하면 Web Config의 값을 사용하는 것 같습니다.


나는 우리가 2020이라는 것을 알고 있지만 이것이 내 문제 덕분에 해결되었습니다!
Binary9

8

그게 보통 당신이해야 할 모든 것입니다 ...

20 분 후에 세션이 유실 된 이유는 유휴 상태 인 것입니다.

세션이 지워지는 이유는 여러 가지가 있습니다. IIS에 대한 이벤트 로깅을 활성화 한 다음 이벤트 뷰어를 사용하여 세션이 지워진 이유를 확인할 수 있습니다. 다른 이유 일 수도 있습니다.

이벤트 메시지 및 관련 이벤트 테이블에 대한 설명서를 읽을 수도 있습니다 .


3

인증을 사용하는 경우 web.config 파일에 다음을 추가하는 것이 좋습니다.

필자의 경우 사용자는 시간이 초과되면 로그인 페이지로 리디렉션됩니다.

<authentication mode="Forms">
    <forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>

여기 <인증 모드 = "양식"> 내가 배치 후 Web.config의시 오류가 발생했습니다
Lst에 패트릭


2

ASP.Net 코어 1.0 (vNext 또는 다른 이름이 사용됨) 세션은 다르게 구현됩니다. 에서 세션 시간 제한 값을 다음 Startup.cs과 같이 변경했습니다 void ConfigureServices.

services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));

또는 appsettings.json파일 을 사용하려는 경우 다음과 같은 작업을 수행 할 수 있습니다.

// Appsettings.json
"SessionOptions": {
    "IdleTimeout": "00:30:00"
}

// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));

2

IIS에서 설정을 찾을 수 있습니다.

설정

서버 수준, 웹 사이트 수준 또는 "ASP"아래의 앱 수준에서 찾을 수 있습니다.

여기 web.config 수준에서 설정할 수 있다고 생각합니다. 직접 확인하시기 바랍니다.

<configuration>
   <system.web>

      <!-- Session Timeout in Minutes (Also in Global.asax) -->
       <sessionState timeout="1440"/>

   </system.web>
</configuration>

또한 Global.asax에서?
Kiquenet

1

IIS 세션 시간 초과 값은 클래식 .asp 응용 프로그램에만 적용되며 IIS 구성에서 제어됩니다. 귀하의 경우 ASP.NET 앱의 경우 web.config 지정 시간 초과 값만 적용됩니다.


IIS의 앱 풀 시간 초과는 어떻습니까?
SteveCav

1

기본 세션 시간 초과는 IIS에 20 분으로 정의됩니다.

IIS 8.5 웹에서 호스팅되는 각 사이트에 대해 아래 절차를 따르십시오.

IIS 시간 초과 구성

IIS 8.5 관리자를 엽니 다.

사이트 이름을 클릭하십시오.

"관리"섹션에서 "구성 편집기"를 선택하십시오.

구성 편집기 맨 위에있는 "섹션 :"드롭 다운 목록에서 "system.web / sessionState"를 찾으십시오.

응용 프로그램에 따라 가능한 가장 낮은 값을 사용하여 "시간 초과"를 "00:20:00 이하"로 설정하십시오. 허용되는 값은 고가 응용 프로그램의 경우 5 분, 중가 응용 프로그램의 경우 10 분, 낮음의 경우 20 분입니다. 가치 응용 프로그램.

"작업"창에서 "적용"을 클릭하십시오.


0

웹 사이트에 대한 세션 시간 초과를 제거하려는 경우

<authentication mode="Forms">
      <forms timeout="50"/>
</authentication>

web.config 파일의 태그.


-1

Timeout 속성은 응용 프로그램의 Session 객체에 할당 된 시간 초과 기간을 분 단위로 지정합니다. 사용자가 시간 초과 기간 내에 페이지를 새로 고치거나 요청하지 않으면 세션이 종료됩니다.

IIS 6.0 : 허용되는 최소값은 1 분이고 최대 값은 1440 분입니다.

Session.Timeout = 600;

-2

IIS에서 세션 시간 초과 값을 변경 한 후 IIS를 다시 시작하십시오. 이를 위해서는 명령 프롬프트로 이동하십시오. IISRESET을 입력하고 Enter를 누르십시오.


web.config 파일을 편집하면 IIS가 자동으로 재설정됩니다.
Timothy Gonzalez
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.