2012-06-14 15 views
5

Desidero memorizzare un oggetto .NET in Archiviazione BLOB di Azure.Come serializzare un oggetto .NET in Azure Blob Storage senza utilizzare un file temporaneo?

Attualmente mi serializzare in un file XML utilizzando TextWriter (episodeList è l'oggetto che voglio serializzato):

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(); 

e quindi caricare il file in Blob bagagli:

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); 
} 

E 'possibile in qualche modo saltare il file temporaneo in modo che l'XML venga caricato direttamente in Azure Blob Storage?

+0

Ok, qual è il problema? – sharptooth

+0

E 'possibile specificare il percorso bloob instad di C: \ movie.xml – Hope

risposta

6

Si potrebbe fare quanto segue. Creare un'istanza MemoryStream e utilizzare XmlSerializer.Serialize(Stream stream) per serializzare l'oggetto nel flusso di memoria, quindi "riavvolgere" il flusso per iniziare a utilizzare Seek(). Quindi si chiama CloudBlob.UploadFromStream() per caricare il contenuto del flusso nel BLOB.

+0

Ok il suo lavoro va bene .. – Hope

Problemi correlati