Windows Azure: Speicher Client-Exception Unhandle
-
26-09-2019 - |
Frage
Ich bin ein Code für das Hochladen von großen Dateien in die Blobs Schreiben mit Blöcken ... Wenn ich es getestet, es gab mir eine StorageClientException
Sie erklärt: Einer der Anforderungseingänge ist außerhalb des Bereichs
.Ich habe diese Ausnahme in dieser Zeile des Codes:
blob.PutBlock(block, ms, null);
Hier ist mein Code:
protected void ButUploadBlocks_click(object sender, EventArgs e)
{
// store upladed file as a blob storage
if (uplFileUpload.HasFile)
{
name = uplFileUpload.FileName;
byte[] byteArray = uplFileUpload.FileBytes;
Int64 contentLength = byteArray.Length;
int numBytesPerBlock = 250 *1024; // 250KB per block
int blocksCount = (int)Math.Ceiling((double)contentLength / numBytesPerBlock); // number of blocks
MemoryStream ms ;
List<string>BlockIds = new List<string>();
string block;
int offset = 0;
// get refernce to the cloud blob container
CloudBlobContainer blobContainer = cloudBlobClient.GetContainerReference("documents");
// set the name for the uploading files
string UploadDocName = name;
// get the blob reference and set the metadata properties
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(UploadDocName);
blob.Properties.ContentType = uplFileUpload.PostedFile.ContentType;
for (int i = 0; i < blocksCount; i++, offset = offset + numBytesPerBlock)
{
block = Convert.ToBase64String(BitConverter.GetBytes(i));
ms = new MemoryStream();
ms.Write(byteArray, offset, numBytesPerBlock);
blob.PutBlock(block, ms, null);
BlockIds.Add(block);
}
blob.PutBlockList(BlockIds);
blob.Metadata["FILETYPE"] = "text";
}
}
Kann jemand mir sagen, wie es zu lösen ...
Lösung
Ich glaube, Sie haben ms.Position = 0 zu tun, den Strom zurück an den Start zu bekommen, bevor sie hochgeladen werden. (Sonst vermutlich PutBlock versucht, aus dem Stream zu lesen und finde es schon am Ende.)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow