我相信这个错误是因为 BlobRequestOptions.SingleBlobUploadThresholdInBytes 值。此值实际上指定了可以上载的blob的最大大小,而不会将其分解为块。如果未为此属性指定任何值,则默认值为 128MB 。因为你没有明确地设置它,你的blob大小是 40MB ,Azure Storage SDK尝试在单个请求中上传这个40MB数据,而不会将其分成块,并且该请求以某种方式超时。
BlobRequestOptions.SingleBlobUploadThresholdInBytes
128MB
40MB
要解决此问题,请明确设置此值 2MB 要么 4MB 。然后,SDK将以20(或10)个块的形式破坏您的40MB文件并上传这些块。
2MB
4MB
这是我使用的代码:
var cred = new StorageCredentials(accountName, accountKey); var account = new CloudStorageAccount(cred, true); CloudBlobClient client = account.CreateCloudBlobClient(); client.DefaultRequestOptions = new BlobRequestOptions() { SingleBlobUploadThresholdInBytes = 2 * 1024 * 1024 }; var container = client.GetContainerReference("myblobcontainer"); container.CreateIfNotExists(); var filePath = @"Full File Path"; var blob = container.GetBlockBlobReference("blob name.exe"); using (var fs = new FileStream(filePath, FileMode.Open)) { blob.UploadFromStream(fs); }
我使用此代码上传了大约60MB的文件。