use*_*567 7 asp.net-mvc azure azure-storage-blobs async-await c#-5.0
我有一个非常简单的服务,
public class AzureService : IAzureService
{
private readonly CloudBlobContainer _container;
public AzureService(ISettings settings)
{
var storageAccount = CloudStorageAccount.Parse(settings.BlobConnectionString);
var blobClient = storageAccount.CreateCloudBlobClient();
_container = blobClient.GetContainerReference(settings.BlobContainerName);
}
public Task UploadBlobAsync(string fileName, Stream stream)
{
var blob = _container.GetBlockBlobReference(fileName);
return blob.UploadFromStreamAsync(stream);
}
public Task DeleteBlobAsync(string fileName)
{
var blob = _container.GetBlockBlobReference(fileName);
return blob.DeleteAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
这个方法叫做,
public Task SaveAllAsync(Dictionary<string, Stream> images)
{
var tasks = new List<Task>();
foreach (var image in images)
{
var fileName = image.Key;
var stream = image.Value;
var task = _azureService.UploadBlobAsync(fileName, stream);
tasks.Add(task);
}
return Task.WhenAll(tasks);
}
Run Code Online (Sandbox Code Playgroud)
我的流是HttpPostedFileBase.InputStream.有时它有效,有时我得到The remote server returned an error: (400) Bad Request.
.如果我提出一个断点也可以.
我遇到了同样的问题,我尝试在 1 次罢工中上传 20 多个图像,单线程工作,多线程使用await Task.WhenAll
失败,并显示“远程服务器返回错误:(400) 错误请求”。
有关更多详细信息,请参阅Upload[xxx]Async 方法抛出的
RequestInformation
内部内容。Microsoft.WindowsAzure.Storage.StorageException
首先,RequestInformation
说了一些关于错误代码为“Md5Mismatch”的 MD5 问题,相信我的直觉说不然,因为单线程工作起来就像一个魅力,然后..我发现了它......DefaultRequestOptions.ParallelOperationThreadCount
在CloudBlobClient
对象和问题解决上。
private CloudBlobContainer ConnectToImageContainer()
{
var credentials = new StorageCredentials(AccountName, ImagesContainerKey);
var account = new CloudStorageAccount(credentials, useHttps: true);
var client = account.CreateCloudBlobClient();
client.DefaultRequestOptions.ParallelOperationThreadCount = 64; // max value
client.DefaultRequestOptions.SingleBlobUploadThresholdInBytes = 67108864; // max value
var container = client.GetContainerReference(ImagesContainerName);
return container;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1720 次 |
最近记录: |