Azure AppFabric cache come Session State Provider

Cercando di utilizzare la cache di AppFabric per condividere lo stato della sessione di una web role Azure tra più istanze, sono incappato in un fastidiosissimo bug.

In pratica utilizzando il normale classico provider

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

eseguendo in locale con l’emulatore ed utilizzando 2 o più istanze, random, la sessione viene cancellata con ripercussioni terrificanti sul software.

Dopo qualche googlata sono incappato in questo post
http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/127ba211-51b2-4f3e-9e7b-1b41af269708 
che riporta lo stesso problema e fortunatamente un workaround.

Riassumendo, occorre cambiare il provider in questo modo

    <sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
      <providers>
        <clear />
        <add name="AppFabricCacheSessionStoreProvider" 
type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider, Microsoft.ApplicationServer.Caching.Client"
cacheName="default"
sharedId="myAppName" /> </providers> </sessionState>

Da notare che una volta pubblicato “fisicamente” su Azure il problema spariva.

Ora però non so se con questo nuovo provider rischio di trovarmi qualche brutta sorpresa quando andrò online: se non posterò update catastrofici vorrà dire che il nuovo provider funziona anche su Azure Occhiolino

«marzo»
domlunmarmergiovensab
26272829123
45678910
11121314151617
18192021222324
25262728293031
1234567