2012-09-11 8 views
6

Para mi aplicación MVC4, ejecutar en Azure, almaceno las sesiones en un caché de ubicación conjunta. Como se describe en this How-to que proporciona Microsoft.Las sesiones almacenadas en un caché de Azure con ubicación conjunta no se sincronizan en varias instancias

Ejecuto dos pequeñas instancias, y todo parece funcionar bien. Puedo iniciar sesión en la aplicación y permanezco conectado cuando navego dentro de la aplicación. Entonces la sesión parece funcionar en ambas instancias.

Sin embargo, cuando actualice la información de sesión algo como esto:

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

Ese único cambio parecen tener un efecto en la instancia que se encargan de que la solicitud particular. Ahora, mientras navego por la aplicación, a veces obtengo el valor inicial y, a veces, obtengo el valor actualizado.

no he realizado ningún cambio en el web.config, por lo que se ve exactamente como lo hacen cuando se agrega por el paquete 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> 

¿Es necesario para manejar las sesiones de otra manera cuando uso el caché de Azure, o es algo más que me falta aquí?

Respuesta

7

Debe asignar un applicationName para que la memoria caché distribuida pueda ver el estado compartido dentro del mismo límite de la aplicación. Ver MSDN forum post for reference.

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

Si desea compartir el estado de caché a través de límites de aplicación, es necesario asignar sharedId

+0

Esto tiene sentido, gracias! Voy a darle una oportunidad. –

+1

Eso funcionó como un encanto, gracias de nuevo! –

Cuestiones relacionadas