다음을 통해 공유


Azure 역할 내 캐시의 ASP.NET 세션 상태 공급자 구성 설정

업데이트 날짜: 2015년 8월

중요

새로 시작하는 모든 개발 작업에서는 Azure Redis Cache를 사용하는 것이 좋습니다. Azure Cache 기능 선택에 대한 최신 설명서 및 지침은 내게 적합한 Azure 캐시 기능을 참조하세요.

이 항목에서는 ASP.NET의 Azure 세션 상태 공급자에 대한 구성 설정에 대해 설명합니다. 이러한 설정은 web.config 파일에 포함된 providers 요소의 sessionState 섹션에 지정되어 있습니다.

세션 상태 구성 설정

특성 설명

name(필수)

sessionState 요소에서 공급자를 참조하는 데 사용되는 공급자의 "식별" 이름입니다.

type(필수)

공급자에 대한 .NET Framework 형식 문자열입니다. 필수 값은 아래의 참고 사항을 참조하세요.

cacheName(필수)

Azure 캐시의 이름입니다. “default”로 설정해야 합니다.

dataCacheClientName(선택)

dataCacheClients 구성 섹션에서 사용할 dataCacheClient 섹션의 이름입니다. 이 특성은 web.config 파일에 여러 dataCacheClient 섹션이 지정된 경우에만 필요합니다. 기본적으로 공급자는 “default”라는 dataCacheClient섹션을 사용합니다.

applicationName(선택)

출력 캐시 데이터를 저장할 캐시 키를 만들 때 공급자가 사용하는 문자열 값입니다. 기본값은 빈 문자열입니다. 이 특성이 설정되지 않은 경우 공급자는 HttpRuntime.AppDomainAppId 값을 내부적으로 사용하는 캐시 키의 일부로 사용합니다. 세션 상태 기능과 달리 여러 ASP.NET 응용 프로그램에서 출력 캐시 데이터를 공유할 수 없습니다(예: /contoso와 /AdventureWorks에서 출력 캐시 데이터를 공유할 수 없음). 대신 같은 응용 프로그램의 여러 실제 인스턴스에서 모두 동일한 출력 캐시 데이터에 액세스할 수 있어야 합니다. 이 작업을 수행하는 방법에는 두 가지가 있습니다.

  • applicationName 공급자 특성이 명시적으로 설정되지 않은 경우 캐시 키를 생성할 때 공급자가 HttpRuntime.AppDomainAppId를 내부적으로 사용합니다. 즉, 정확히 같은 메타베이스 경로를 사용하여 같은 응용 프로그램의 각 실제 인스턴스(즉, /contoso 응용 프로그램을 호스팅하는 각 웹 서버)를 IIS에 설치해야 합니다. SQL Server 및 Out-of-process 세션 상태 공급자에서 메타베이스 경로를 사용하는 방법에 대한 자세한 내용은 https://support.microsoft.com/kb/325056을 참조하세요. 세션 상태는 다른 기능이지만 메타베이스 경로를 동기화된 상태로 유지할 때는 같은 문제가 발생합니다. 이는 web.config 파일에 applicationName 특성이 설정되지 않은 경우 출력 캐싱에 적용됩니다.

  • 보다 쉬운 접근 방식은 같은 ASP.NET 응용 프로그램의 각 인스턴스(예: /contoso 응용 프로그램을 호스팅하는 각 웹 서버)에서 web.config 파일의 동일한 applicationName 특성을 사용하는 것입니다. 이렇게 하면 같은 응용 프로그램의 서로 다른 실제 인스턴스에서 동일한 출력 캐시 데이터를 읽고 쓸 수 있습니다. 이 경우 공급자는 캐시 키를 생성할 때 AppDomainAppId를 사용하지 않으므로 메타베이스 경로가 일치하지 않을 위험이 없습니다.

useBlobMode(선택)

세션 상태 데이터를 단일 직렬화된 Blob로 로드하고 저장할지 여부를 지정하는 부울 값입니다. 이번 릴리스에서는 이 특성을 기본값인 true로 설정해야 합니다. false 값은 사용할 수 없습니다.

nonInlinedAdditionalLifetime(지원되지 않음)

이번 릴리스에서는 이 특성이 지원되지 않습니다.

retryInterval(선택)

캐시와 통신할 때 오류가 발생한 경우 다시 시도 간에 대기할 시간 길이에 대한 TimeSpan입니다. 이 값에 사용할 문자열 형식은 "HH:MM:SS"입니다. 기본적으로 공급자는 1초 동안 대기합니다.

retryCount(선택)

캐시와의 통신 실패 시 공급자에 다시 시도 횟수를 알려 주는 정수 값입니다. 일부 작업은 다시 시도할 수 없습니다. 다시 시도 횟수 기본값은 3회입니다. 공급자는 각 다시 시도 간에 구성된 retryInterval 시간 동안 대기합니다.

inlinedKeys(지원되지 않음)

이번 릴리스에서는 이 특성이 지원되지 않습니다.

maxInlinedStringLength(지원되지 않음)

이번 릴리스에서는 이 특성이 지원되지 않습니다.

참고

type 특성은 “Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache”로 설정해야 합니다.

예제

<configuration>
  <configSections>
    <section name="dataCacheClients" 
          type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
          allowLocation="true" allowDefinition="Everywhere" />
    <section name="cacheDiagnostics"
          type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon"
          allowLocation="true" allowDefinition="Everywhere" />
  </configSections>
  <system.web>
    <!-- Azure Caching session state provider -->
    <sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
      <providers>
        <add name="AFCacheSessionStateProvider" 
          type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" 
          cacheName="default" 
          dataCacheClientName="default" 
          applicationName="AFCacheSessionState"/>
      </providers>
    </sessionState>
  </system.web>
  <dataCacheClients>
    <dataCacheClient name="default">
      <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    </dataCacheClient>
  </dataCacheClients>
  <cacheDiagnostics>
    <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
  </cacheDiagnostics>
</configuration>

참고 항목

개념

Azure 역할 내 캐시용 세션 상태 공급자