2012-09-11 3 views
6

MVC4 애플리케이션의 경우 Azure에서 실행하면 공유 된 캐시에 세션이 저장됩니다. Microsoft에서 제공하는 this How-to에 설명되어 있습니다.동일 위치에있는 Azure 캐시에 저장된 세션이 여러 인스턴스에서 동기화되지 않음

2 개의 작은 인스턴스를 실행하면 모든 것이 올바르게 작동하는 것 같습니다. 응용 프로그램에 로그인 할 수 있으며 응용 프로그램 내에서 탐색 할 때 로그인 상태를 유지합니다. 따라서 세션은 두 인스턴스 모두에서 작동하는 것 같습니다. 단지 특정 요청 것을 처리 인스턴스에 영향을 미칠 것으로 보인다 달라

HttpContext.Current.Session["someVar"] = "new value"; 

:이 같은 세션 데이터 뭔가를 업데이트 그러나

. 이제 응용 프로그램을 탐색 할 때 가끔 초기 값을 얻고 때로는 업데이트 된 값을 얻습니다.

나는의 Web.config에 대한 변경하지 않은, 그래서 그것이 Nuget 패키지가 추가됩니다 때처럼 정확히 같습니다

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider"> 
    <providers> 
    <add name="AppFabricCacheSessionStoreProvider" 
      type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" 
      cacheName="default" 
      useBlobMode="true" 
      dataCacheClientName="default" /> 
    </providers> 
</sessionState> 

내가 다른 방법으로 세션을 처리해야합니까 Azure 캐시를 사용할 때, 아니면 내가 여기에없는 다른 것입니까?

답변

7

분산 캐시가 동일한 응용 프로그램 경계 내에서 공유 상태를 볼 수 있도록 applicationName을 할당해야합니다. MSDN forum post for reference을 참조하십시오. 당신이 응용 프로그램의 경계를 넘어 캐시 상태를 공유하려는 경우

<add name="AppFabricCacheSessionStoreProvider" 
      type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" 
      applicationName="azureMVC4App" 
      cacheName="default" 
      useBlobMode="true" 
      dataCacheClientName="default" /> 

, 당신은이 말이 sharedId

+0

지정해야합니다, 감사합니다! 나는 그것을 시도 할 것이다. –

+1

그것은 매력처럼 다시 일했습니다. 감사합니다! –