如何在不使用临时文件的情况下将.NET对象序列化为Azure Blob存储?

我想将.NET对象存储到Azure Blob存储中。

目前我使用TextWriter将其序列化为XML文件( episodeList是我想要序列化的对象):

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

然后将文件上传到Blob存储:

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

有可能以某种方式跳过临时文件,以便将XML直接上载到Azure Blob存储中吗?

您可以执行以下操作。 创建一个MemoryStream实例并使用XmlSerializer.Serialize(Stream stream)将对象序列化到内存流中,然后使用Seek()将流“回放”到开头。 然后调用CloudBlob.UploadFromStream()将流内容上传到blob。