【发布时间】:2020-01-20 15:19:19
【问题描述】:
我正在向 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。不确定模拟器版本是否有问题?或者是其他东西?因为模拟器运行良好。
我在 .NET Core 2.2.0 解决方案中有它。
【问题讨论】:
-
.NET 2.2.0 soclution?你的意思是.Net-Core?此外,如果函数是 async-await,则确实不需要return await Task.FromResult(fileName);,如果已经等待,只需返回结果return fileName; -
原因可能是存储模拟器 5.10 是最新的,但您的 blob 存储客户端库较旧。您可以尝试使用最新的 blob 存储客户端库here。
标签: c# asp.net-core azure-storage asp.net-core-2.2 azure-blob-storage