BlogServiceHost.Create()

WCF & Azure - Il blog di Fabio Cozzolino

Recent Posts

Tags

My

Twitter

Community

Archives

Email Notifications

Social Bar Widget

July 2011 - Posts

RoleEnvironmentException nella chiamata alla RoleEnvironment.GetLocalResource

In ottica Cloud ogni risorsa (immagine o documento che sia) può e deve essere condivisa tra più istanze, che oggi ci sono e domani non si sa Smile. Per fare questo abbiamo a disposizione blobs e drives.

Talvolta, però, specialmente nella migrazione si applicazioni, possiamo avere la necessità di utilizzare una cartella temporanea per salvare un documento che solo successivamente deve essere elaborato e quindi copiato nel blob. Parliamo quindi di risorse non condivise e con un ciclo di vita davvero limitato.

Windows Azure mette a disposizione il RoleEnvironment.GetLocalResource, un componente che da accesso in lettura/scrittura ad un’apposita area del file system:

   1: LocalResource localResource = RoleEnvironment.GetLocalResource("LocalCache");
   2: _tempFolder = Path.Combine(localResource.RootPath, "temp");
   3: if (!Directory.Exists(_tempFolder))
   4: {
   5:     new DirectoryInfo(localResource.RootPath).CreateSubdirectory("temp");
   6: }

LocalCache è, appunto, un’area opportunamente configurata e ben delimitata nella quale possiamo salvare i nostri files o creare sottocartelle, tutto utilizzando le già ben note classi di System.IO.

LocalCache deve essere necessariamente configurato nel ServiceDefinition.csdef:

   1: <LocalResources>
   2:   <LocalStorage name="LocalCache" cleanOnRoleRecycle="true" />
   3: </LocalResources>

oppure utilizzando il pannello di gestione del Cloud Project:

roleenv

…pena l’eccezione che da il nome a questo post Smile.

Posted: Jul 27 2011, 10:57 PM by Fabio.Cozzolino | with no comments
Filed under: