sessionState 요소(ASP.NET 설정 스키마)

[이 설명서는 미리 보기 전용이며, 이후 릴리스에서 변경될 수 있습니다. 비어 있는 항목은 자리 표시자로 포함됩니다.]

현재 응용 프로그램의 세션 상태 설정을 구성합니다.

<sessionState 
    mode="[Off|InProc|StateServer|SQLServer|Custom]"
    timeout="number of minutes"
    cookieName="session identifier cookie name"
    cookieless=
         "[true|false|AutoDetect|UseCookies|UseUri|UseDeviceProfile]"
    regenerateExpiredSessionId="[True|False]"
    sessionIDManagerType="session manager type"
    sqlConnectionString="sql connection string"
    sqlCommandTimeout="number of seconds"
    allowCustomSqlDatabase="[True|False]"
    useHostingIdentity="[True|False]"
    stateConnectionString="tcpip=server:port"
    stateNetworkTimeout="number of seconds"
    customProvider="custom provider name"
    compressionEnabled="[True|False]"
    sqlConnectionRetryInterval="number of seconds">
    <providers>...</providers>
</sessionState>

특성 및 요소

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성

설명

allowCustomSqlDatabase

선택적 Boolean 특성입니다.

세션 상태 SQL 데이터베이스를 ASP.NET 기본 데이터베이스 대신 사용자 지정 데이터베이스로 사용할 수 있는지 여부를 지정합니다. false이면 초기 카탈로그와 데이터베이스를 sqlConnectionString 특성의 값으로 지정할 수 없습니다. 기본 세션 상태 SQL 데이터베이스는 ASPState 데이터베이스입니다. 자세한 내용은Session State Modes를 참조하십시오.

이 특성은 .NET Framework 버전 2.0에서 새로 도입되었습니다.

기본값은 false입니다.

compressionEnabled

선택적 Boolean 특성입니다.

세션 상태 데이터에 압축을 적용할지 여부를 지정합니다.

기본값은 false입니다.

cookieless

선택적 HttpCookieMode 특성입니다.

웹 응용 프로그램에서 쿠키를 사용하는 방법을 지정합니다.

cookieless 특성은 다음 값 중 하나일 수 있습니다. 기본값은 UseCookies입니다.

NoteNote
AJAX 사용 ASP.NET 웹 사이트를 구성할 때는 cookieless 특성에 UseCookies의 기본값만 사용합니다.URL로 인코딩된 쿠키를 사용하는 설정은 ASP.NET AJAX 클라이언트 스크립트 라이브러리에서 지원되지 않습니다.
값설명
AutoDetect 요청하는 브라우저 또는 장치에서 쿠키를 지원하는지 여부를 ASP.NET에서 확인합니다.요청 브라우저 또는 장치에 쿠키가 지원되면 AutoDetect는 쿠키를 사용하여 사용자 데이터를 유지하고 그렇지 않으면 쿼리 문자열에 식별자가 사용됩니다.브라우저 또는 장치에서 쿠키를 지원하지만 쿠키가 현재 비활성화되어 있는 경우에도 요청 기능에서 쿠키를 사용할 수 있습니다.
UseCookies 브라우저나 장치에서 쿠키를 지원하는지 여부에 관계없이 쿠키를 사용하여 사용자 데이터를 유지합니다.
UseDeviceProfile ASP.NET에서는 HttpBrowserCapabilities 설정을 기반으로 하여 쿠키 사용 여부를 확인합니다.HttpBrowserCapabilities에 브라우저나 장치에서 쿠키를 지원하도록 설정되어 있으면 쿠키를 사용하고 그렇지 않으면 쿼리 문자열에 식별자가 사용됩니다.
UseUri 호출 기능에서는 브라우저나 장치에서 쿠키를 지원하는지 여부에 관계없이 쿼리 문자열을 사용하여 식별자를 저장합니다.

cookieName

선택적 String 특성입니다.

세션 식별자를 저장하는 쿠키의 이름을 지정합니다.

이 특성은 .NET Framework 버전 2.0에서 새로 도입되었습니다.

기본값은 "ASP.NET_SessionId"입니다.

customProvider

선택적 String 특성입니다.

세션 상태 데이터를 저장하고 검색하는 데 사용할 사용자 지정 세션 상태 공급자의 이름을 지정합니다. 해당 공급자는 providers 요소에 지정되어 있습니다. 세션 상태 모드가 Custom 값으로 설정되어 있는 경우에만 해당 공급자가 사용됩니다. 자세한 내용은 Session State Modes를 참조하십시오.

이 특성은 .NET Framework 버전 2.0에서 새로 도입되었습니다.

기본값은 빈 문자열("")입니다.

mode

선택적 SessionStateMode 특성입니다.

세션 상태 값을 저장할 위치를 지정합니다. 자세한 내용은 Session State Modes를 참조하십시오.

mode 특성은 다음 값 중 하나일 수 있습니다. 기본값은 InProc입니다.

값설명
Custom 세션 상태가 사용자 지정 데이터 저장소를 사용하여 세션 상태 정보를 저장하고 있습니다.
InProc 세션 상태가 ASP.NET 작업자 프로세스와 함께 처리되고 있습니다.
Off 세션 상태가 비활성화되어 있습니다.
SQLServer 세션 상태가 out-of-process SQL Server 데이터베이스를 사용하여 상태 정보를 저장하고 있습니다.
StateServer 세션 상태에서 out-of-process ASP.NET 상태 서비스를 사용하여 상태 정보를 저장합니다.

partitionResolverType

선택적 String 특성입니다.

세션 상태를 저장할 위치를 지정합니다. partitionResolverType 특성에 값이 지정되면 sqlConnectionString 및 stateConnectionString 특성이 무시됩니다. PartitionResolverType 속성에서 반환하는 연결 문자열은 각 요청에서 요청의 나머지 부분에 대해 적절한 서버 위치에 연결하는 데 사용됩니다. 연결 문자열이 올바르지 않으면 ASP.NET에서는 서버에 대해 구성된 연결 문자열이 올바르지 않은 경우에 throw되는 예외와 동일한 예외를 throw합니다. 이 속성은 SQL 또는 상태 서버 모드에서 여러 백엔드 노드에 있는 세션 상태 데이터를 분할하는 데 사용됩니다.

이 특성은 .NET Framework 버전 2.0에서 새로 도입되었습니다.

기본값은 빈 문자열입니다.

regenerateExpiredSessionId

선택적 Boolean 특성입니다.

클라이언트가 만료된 세션 ID를 지정한 경우에 해당 세션 ID를 다시 발급할지 여부를 지정합니다. 기본적으로 세션 ID는 regenerateExpiredSessionId가 설정되어 있는 경우 cookieless 모드에 대해서만 다시 발급됩니다. 자세한 내용은 IsCookieless를 참조하십시오.

이 특성은 .NET Framework 버전 2.0에서 새로 도입되었습니다.

기본값은 true입니다.

sessionIDManagerType

선택적 String 특성입니다.

세션 ID 관리자의 정규화된 형식을 지정합니다. 기본값은 빈 문자열입니다.

sqlCommandTimeout

선택적 TimeSpan 특성입니다.

SQL Server 세션 상태 모드를 사용하는 SQL 명령의 제한 시간(초)을 지정합니다. 이 제한 시간 값은 SQL 명령이 취소되기 전에 유휴 상태를 유지할 수 있는 시간(초)입니다.

이 특성은 .NET Framework 버전 2.0에서 새로 도입되었습니다.

기본값은 0:00:30(30초)입니다.

sqlConnectionRetryInterval

선택적 TimeSpan 특성입니다.

데이터베이스 연결 시도 사이의 초 단위 시간 간격을 지정합니다.

기본값은 0초입니다.

sqlConnectionString

선택적 String 특성입니다.

SQL Server를 실행하는 컴퓨터의 연결 문자열을 지정합니다. 이 특성은 mode 특성이 SQLServer 값으로 설정된 경우에 필요합니다. 자세한 내용은 Session State Modes를 참조하십시오.

이 특성을 connectionStrings 노드의 명명된 sqlConnectionString으로 설정할 수도 있고 다음 구문을 사용할 수도 있습니다.

sqlConnectionString="Data Source=.\SQLServer2005;Initial Catalog=SessionState;Integrated Security=SSPI;"
NoteNote
SQLServer 모드를 사용하는 경우 응용 프로그램의 보안을 향상시키려면보호되는 구성을 통해 구성의 sessionState 섹션을 암호화하여 sqlConnectionString 값을 보호합니다.

기본값은 "data source=127.0.0.1;Integrated Security=SSPI"입니다.

stateConnectionString

선택적 String 특성입니다.

세션 상태가 원격으로 저장되는 서버 이름 또는 주소와 포트를 지정합니다. 포트 값은 42424여야 합니다. 이 특성은 mode가 StateServer 값인 경우에 필요합니다. 세션 상태 정보를 저장하는 원격 서버에서 ASP.NET 상태 서비스가 실행 중인지 확인해야 합니다. 이 서비스는 ASP.NET과 함께 설치되며 기본 위치는 %windir%\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe입니다. 자세한 내용은 Session State Modes를 참조하십시오.

NoteNote
StateServer 모드를 사용하는 경우 응용 프로그램의 보안을 향상시키려면보호되는 구성을 통해 구성의 sessionState 섹션을 암호화하여 stateConnectionString 값을 보호합니다.

기본값은 "tcpip=127.0.0.1:42424"입니다.

stateNetworkTimeout

선택적 TimeSpan 특성입니다.

요청이 취소되기 전에 웹 서버와 상태 서버 간의 TCP/IP 네트워크 연결이 유휴 상태를 유지할 수 있는 시간(초)을 지정합니다. 이 특성은 mode 특성이 StateServer 값으로 설정된 경우에 사용됩니다.

기본값은 10초입니다.

timeout

선택적 TimeSpan 특성입니다.

세션이 중단되기 전까지 유휴 상태로 있을 수 있는 시간(분)을 지정합니다. timeout 특성은 in-process 및 상태 서버 모드에 대해 525,600분(1년)보다 큰 값으로 설정할 수 없습니다.

세션 timeout 구성 설정은 ASP.NET 페이지에만 적용됩니다. 세션 timeout 값을 변경해도 ASP 페이지의 세션 제한 시간에는 영향을 주지 않습니다. 마찬가지로 ASP 페이지의 세션 제한 시간을 변경해도 ASP.NET 페이지의 세션 제한 시간에는 영향을 주지 않습니다.

기본값은 20분입니다.

useHostingIdentity

선택적 Boolean 특성입니다.

세션 상태에서 호스팅 ID로 되돌아 갈지 또는 클라이언트 가장을 사용할지 여부를 지정합니다.

true이면 ASP.NET에서는 다음과 같은 프로세스 자격 증명 중 하나를 사용하여 세션 상태 저장소에 연결합니다.

  • 호스팅 프로세스. 이 프로세스는 Microsoft IIS(인터넷 정보 서비스) 버전 5 및 5.1의 경우 ASPNET이고 Microsoft Windows Server 2003의 경우에는 NETWORK SERVICE입니다.

  • 응용 프로그램 가장 ID. 이때 다음과 같은 구성이 사용됩니다.

    <identity impersonate="true" userName="domain\username" password="보안 암호" />

false이면 ASP.NET에서는 현재 요청의 운영 체제 스레드와 연결되어 있는 자격 증명을 사용하여 세션 상태 저장소에 연결합니다. 클라이언트 가장의 경우 ASP.NET에서는 브라우저와 협상된 보안 자격 증명을 사용하여 세션 상태 저장소에 연결합니다. false이면 ASP.NET에서는 세션 상태 저장소에 연결할 때 프로세스 ID 또는 응용 프로그램 가장 ID로 되돌리지 않습니다. 자세한 내용은 ASP.NET Impersonation을 참조하십시오.

이 특성은 .NET Framework 버전 2.0에서 새로 도입되었습니다.

기본값은 true입니다.

NoteNote
.NET Framework 버전 1.1에서 mode 특성이 SQLServer로 설정되고 클라이언트 가장이 적용된 경우, ASP.NET에서는 ASP.NET 클라이언트 가장의 클라이언트 자격 증명을 사용하여 SQL Server가 실행되는 컴퓨터에 연결했습니다.

상속된 특성

선택적 특성입니다.

모든 section 요소가 상속하는 특성입니다.

자식 요소

요소

설명

providers

사용자 지정 세션 상태 저장소 공급자의 컬렉션이 포함되어 있습니다.

부모 요소

요소

설명

configuration

공용 언어 런타임 및 .NET Framework 기반 응용 프로그램에서 사용하는 모든 구성 파일의 필수 루트 요소입니다.

system.web

구성 파일에서 ASP.NET 구성 설정에 대한 루트 요소를 지정하며, ASP.NET 웹 응용 프로그램을 구성하고 응용 프로그램의 동작 방식을 제어하는 요소를 포함합니다.

설명

<sessionState> 요소는 현재 응용 프로그램의 세션 상태 설정을 구성합니다.

새 클라이언트가 웹 응용 프로그램과 상호 작용을 시작하면 세션 ID가 발급되고 이 ID는 세션이 유효한 기간 동안 동일한 클라이언트에서 수행하는 이후의 모든 요청에 연결됩니다. 이 ID는 전체 요청에서 클라이언트 세션에 연결되는 서버 쪽 상태를 유지 관리하는 데 사용됩니다. <sessionState> 요소는 ASP.NET 응용 프로그램에서 각 클라이언트를 위해 연결을 설정하고 관리하는 방법을 제어합니다.

이 메커니즘은 유연성이 매우 높으며 세션 상태 정보를 out of process로 호스팅할 수 있을 뿐만 아니라 쿠키를 사용하지 않고도 상태를 추적할 수 있는 등 여러 가지 장점이 있습니다.

URI를 사용하여 세션 ID를 보내는 경우 최대 URI 크기를 초과할 수 있습니다. 익명 ID 티켓, 폼 인증 티켓, 세션 ID 및 사용자 데이터의 조합이 허용 가능한 최대 URI 길이보다 큰 경우에는 400-잘못된 요청 오류와 함께 요청이 실패합니다.

StateServer 모드를 사용하려면

  1. 세션 상태 정보를 저장하는 원격 서버에서 ASP.NET 상태 서비스가 실행 중인지 확인합니다.

    ASP.NET 상태 서비스는 ASP.NET과 함께 설치되며 기본 위치는 %windir%\Microsoft.NET\Framework\version\aspnet_state.exe입니다.

  2. 응용 프로그램의 Web.config 파일에서 mode를 "StateServer"로 설정하고 stateConnectionString을 값(예: "tcpip=dataserver:42424")으로 설정합니다.

SQLServer 모드를 사용하려면

  1. 세션 상태를 저장할 SQL Server를 실행하는 컴퓨터에서 InstallSqlState.sql을 실행합니다.

    기본적으로 InstallSqlState.sql은 %windir%\Microsoft.NET\Framework\version에 있습니다.

    이렇게 하면 새 저장 프로시저가 포함된 ASPState 데이터베이스가 만들어지고 TempDB 데이터베이스에는 ASPStateTempApplications 및 ASPStateTempSessions 테이블이 만들어집니다.

  2. 응용 프로그램의 Web.config 파일에서 mode를 "SQLServer"로 설정하고 sqlConnectionString을 값(예: "data source=localhost;Integrated Security=SSPI;")으로 설정합니다.

    참고

    Aspnet_regsql.exe를 사용하여 이러한 단계를 완료할 수 있습니다.

응용 프로그램 코드에서 <sessionState> 요소의 구성 값에 액세스하여 수정하는 방법에 대한 내용은 SessionStateSectionSystem.Web.SessionState를 참조하십시오.

기본 구성

다음의 기본 <sessionState> 요소는 Machine.config 파일 또는 루트 Web.config 파일에 명시적으로 구성되어 있지 않습니다. 그러나 이 요소는 응용 프로그램에서 반환하는 기본 구성입니다.

<sessionState 
   mode="InProc" 
   stateConnectionString="tcpip=127.0.0.1:42424" 
   stateNetworkTimeout="10" 
   sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI" 
   sqlCommandTimeout="30" 
   customProvider="" 
   cookieless="UseCookies" 
   cookieName="ASP.NET_SessionId" 
   timeout="20" 
   allowCustomSqlDatabase="false" 
   regenerateExpiredSessionId="true" 
   partitionResolverType="" 
   useHostingIdentity="true">
   <providers>
      <clear />
   </providers>
</sessionState>

예제

다음 예제에서는 세션 상태 구성 설정을 지정하는 방법을 보여 줍니다.

<sessionState
   mode="SQLServer"
   cookieless="true"
   sqlConnectionString=" Integrated Security=SSPI;data source=MySqlServer;"
   sqlCommandTimeout="10" />

요소 정보

구성 섹션 처리기

SessionStateSection

구성 멤버

System.Web.SessionState

구성 가능한 위치

Machine.config

루트 수준의 Web.config

응용 프로그램 수준의 Web.config

요구 사항

Microsoft 인터넷 정보 서비스 5.0, 5.1 또는 6.0

.NET Framework 버전 1.0, 1.1 또는 2.0

Microsoft Visual Studio 2003 또는 Visual Studio 2005

참고 항목

작업

How to: Configure Specific Folders Using Location Settings

How to: Lock ASP.NET Configuration Settings

참조

system.web 요소(ASP.NET 설정 스키마)

sessionState에 대한 providers 요소(ASP.NET 설정 스키마)

configuration 요소(일반 설정 스키마)

System.Configuration

System.Web.Configuration

SessionStateSection

System.Web.SessionState

개념

ASP.NET Impersonation

Session State Modes

Securing Session State

ASP.NET Configuration File Hierarchy

Securing Configuration

Configuration Inheritance

기타 리소스

Protected Configuration

일반 구성 설정(ASP.NET)

ASP.NET 구성 설정

Configuring ASP.NET Applications

ASP.NET Configuration API