Estoy usando AppFabric como proveedor de estado de sesión en mi aplicación ASP.Net MVC2, y me gustaría que también use la memoria caché local. Tengo la siguiente entrada en mi web.config justo después del nodo configSections:¿Puede AppFabric ser el proveedor del estado de la sesión y usar el caché local?
<dataCacheClient>
<localCache
isEnabled="true"
sync="TimeoutBased"
objectCount="100000"
ttlValue="300" />
<hosts>
<host name="127.0.0.1" cachePort="22233"/>
</hosts>
</dataCacheClient>
que también tienen la siguiente entrada en web.config como un hijo del nodo system.web:
<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
<providers>
<add name="AppFabricCacheSessionStoreProvider" type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" cacheName="Default" sharedId="DefaultId"/>
</providers>
</sessionState>
Por desgracia, si añado algo a la sesión a continuación, ejecute los dos comandos siguientes en el powershell AppFabric, nada he añadido a mi sesión de datos ya no está allí, que me deja creer que no estaba usando caché local:
Stop-CacheCluster
Start-CacheCluster
también trato objetos de almacenamiento en caché con AppFabric usando el siguiente código y después de arrancar y parar el CacheCluster el objeto una vez en caché ya no se almacena en caché:
var factory = new DataCacheFactory();
var cache = factory.GetCache("Default");
cache.Put("Key", "Test");
Sin embargo si instanciar AppFabric usando el siguiente código donde explícitamente la cuento utilizar caché local en lugar de confiar en la entrada web.config funciona:
var servers = new List<DataCacheServerEndpoint>(1) { new DataCacheServerEndpoint("127.0.0.1", 22233) };
var configuration = new DataCacheFactoryConfiguration {
Servers = servers,
LocalCacheProperties = new DataCacheLocalCacheProperties(100000, new TimeSpan(0, 30, 0), DataCacheLocalCacheInvalidationPolicy.TimeoutBased)
};
var factory = new DataCacheFactory(configuration);
var cache factory.GetCache("StpWebSession");
cache.Put("Key", "Test");
¿Qué estoy haciendo mal, ¿por qué no se web.config trabajo de entrada en contar AppFabric utilizar caché local? ¿Puedes usar AppFabric como tu proveedor de estado de sesión y también hacer que use caché local?