estoy usando PutBlock y PutBlockList cargar datos en una burbuja de bloque, el código que estoy utilizando para esto es a continuación: -escritura a Azure Bloque Blobs
CloudBlobContainer container = blobStorage.GetContainerReference("devicebackups");
var permissions = container.GetPermissions();
permissions.PublicAccess = BlobContainerPublicAccessType.Container;
container.SetPermissions(permissions);
CloudBlockBlob blob = container.GetBlockBlobReference(serialNo.ToLower() + " " + dicMonths[DateTime.Now.Month]);
try
{
var serializer = new XmlSerializer(typeof(List<EnergyData>));
var stringBuilder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(stringBuilder))
{
try
{
serializer.Serialize(writer, deviceData);
byte[] byteArray = Encoding.UTF8.GetBytes(stringBuilder.ToString());
List<string> blockIds = new List<string>();
try
{
blockIds.AddRange(blob.DownloadBlockList(BlockListingFilter.Committed).Select(b => b.Name));
}
catch (StorageClientException e)
{
if (e.ErrorCode != StorageErrorCode.BlobNotFound)
{
throw;
}
blob.Container.CreateIfNotExist();
}
var newId = Convert.ToBase64String(Encoding.UTF8.GetBytes(blockIds.Count().ToString()));
blob.PutBlock(newId, new MemoryStream(byteArray), null);
blockIds.Add(newId);
blob.PutBlockList(blockIds);
}
catch (Exception ex)
{
UT.ExceptionReporting(ex, "Error in Updating Backup Blob - writing byte array to blob");
}
}
}
catch (Exception ex)
{
UT.ExceptionReporting(ex, "Error in Updating Backup Blob - creating XmlWriter");
}
}
catch (Exception ex)
{
UT.ExceptionReporting(ex, "Error in Updating Backup Blob - getting container and blob references, serial no -" + serialNo);
}
Esto funciona para 10 bloques, a continuación, en el 11 bloquearlo se bloquea con el siguiente error: -
StorageClientException - La lista de bloqueo especificada no es válida.
InnerException = {"The remote server returned an error: (400) Bad Request."}
He buscado en Internet informes del mismo error, pero no he tenido suerte.
Cualquier ayuda sería muy apreciada.
Por curiosidad, ¿alguna razón por la que simplemente está usando una corriente para enrollarla en la burbuja? – BrentDaCodeMonkey
¿Está utilizando este código en el emulador o en una cuenta de almacenamiento real? –
te falta un 'try {' al principio, porque tienes un '} catch' después de todo el código entre paréntesis –