2012-06-14 17 views
5

Quiero almacenar un objeto .NET en Azure Blob Storage.¿Cómo serializo un objeto .NET en Azure Blob Storage sin usar un archivo temporal?

Actualmente me serializarlo en un archivo XML utilizando TextWriter (episodeList es el objeto que quiero serializado):

XmlAttributeOverrides overrides = new XmlAttributeOverrides(); 
XmlAttributes Xmlattr = new XmlAttributes(); 
Xmlattr.XmlRoot = new XmlRootAttribute("EPISODES"); 
overrides.Add(typeof(List<EpisodeData>), Xmlattr); 
XmlSerializer serializer = new XmlSerializer(typeof(List<EpisodeData>), overrides); 
TextWriter textWriter = new StreamWriter(@"C:\movie.xml"); 
serializer.Serialize(textWriter, episodeList); 
textWriter.Close(); 

y luego subir el archivo en Blob de almacenamiento:

CloudBlobClient blobStorage = createOrGetReferenceOfBlobStorage(folderName); 
string uniqueBlobName = string.Format("{0}/{1}", folderName, fileName); 
CloudBlockBlob blob = clouBblockBlobPropertySetting(blobStorage, uniqueBlobName, ".txt"); 
using (StreamWriter writer = new StreamWriter(blob.OpenWrite())) 
{ 
    writer.Write(content); 
} 

¿Es posible ¿omitir de alguna manera el archivo temporal para que el XML se cargue directamente en Azure Blob Storage?

+0

Bien, ¿cuál es el problema? – sharptooth

+0

¿Es posible especificar la ruta de acceso bloob en C: \ movie.xml – Hope

Respuesta

6

Puede hacer lo siguiente. Cree una instancia de MemoryStream y use XmlSerializer.Serialize(Stream stream) para serializar el objeto en la secuencia de la memoria y luego "rebobinar" la secuencia hasta comenzar utilizando Seek(). Luego, llama al CloudBlob.UploadFromStream() para subir el contenido de la secuencia al blob.

+0

? Está bien, funciona bien ... – Hope

Cuestiones relacionadas