Ich habe den folgenden Code:Warum gibt CloudBlockBlob.DownloadToStream immer einen leeren Stream zurück?
public static void UploadStreamToBlob(Stream stream, string containerName, string blobName)
{
CloudStorageAccount storageAccount =
CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName);
blobContainer.CreateIfNotExists();
blobContainer.SetPermissions(
new BlobContainerPermissions
{
PublicAccess = BlobContainerPublicAccessType.Blob
});
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(blobName);
long streamlen = stream.Length; <-- This shows 203 bytes
blockBlob.UploadFromStream(stream);
}
und
public static Stream DownloadStreamFromBlob(string containerName, string blobName)
{
CloudStorageAccount storageAccount =
CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference(containerName);
Stream stream = new MemoryStream();
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(blobName);
if (blockBlob.Exists())
{
blockBlob.DownloadToStream(stream);
long streamlen = stream.Length; <-- This shows 0 bytes
stream.Position = 0;
}
return stream;
}
ich dies in dem Azure-Emulator ausgeführt wird, das ich meinen SQL Server hingewiesen habe.
Von dem, was ich sagen kann, scheint es, dass der UploadFromStream die Daten korrekt sendet, aber wenn ich versuche, den DownloadStreamFromBlob auszuführen, gibt es einen 0-Länge-Stream zurück. Die blockBlob.Exists gibt true zurück, also nehme ich an, dass es da ist. Ich kann einfach nicht herausfinden, warum mein Stream leer ist.
Btw, ich bin in Test übergeben und für Containername und BlobName auf beide Aufrufe testen.
Irgendwelche Ideen?
+1 geändert werden Download-Szenario ... So oft sind es die einfachen Details, die uns stolpern. –
Es ist ein häufiges Problem beim Arbeiten mit Streams. Ich setze auf meine IO-Methoden 'stream.Seek (0, SeekOrigin.Begin);' –