我正在将电子邮件上传到Azure存储,当我致电UploadFromStreamAsync
以下是全部功能:
public async Task<string> UploadFileToStorage(IFormFile photo, AzureStorageConfig _storageConfig)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(_storageConfig.ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(_storageConfig.ImageContainer);
var fileName = photo.FileName;
CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName);
blockBlob.Properties.ContentType = GetContentType(photo.FileName);
blockBlob.Properties.CacheControl = "max-age=31536000";
using (var stream = photo.OpenReadStream())
{
// Upload the file
//await blockBlob.UploadFromByteArrayAsync(ReadFully(stream, blockBlob.StreamWriteSizeInBytes), 0, (int)stream.Length);
await blockBlob.UploadFromStreamAsync(stream);
}
return await Task.FromResult(fileName);
}
在我的同事机器上工作正常,他使用5.7存储模拟器,我使用5.10。不确定模拟器版本可能是问题吗?或者是其他东西? Cos模拟器运行正常。
我在.NET Core 2.2.0解决方案中拥有它。
答案 0 :(得分:0)
一个可能的原因是Blob存储客户端库在您这边过时了。
请尝试使用带有存储模拟器5.10的最新版本的blob存储客户端库Microsoft.Azure.Storage.Blob 11.0.1。
答案 1 :(得分:0)
我解决了此问题,删除了await,并在UploadFromStreamAsync(stream)之后使用.Wait()。不可思议但真实。 显然,您不能使用异步方法。