使用异步任务 Azure 关闭内存流
Close Memory Stream with async Task Azure
我有一个将 base64 图像上传到 Azure 的 Web Api 函数,我使用异步任务方法来执行此操作。问题是代码执行卡在 await 字上,永远不会移动 next 来关闭流,即使在上传照片之后我也没有收到任何错误。
public async Task<bool> UploadImage(string filename, MemoryStream uploadStream)
{
var blobClient = ConnectToAzure();
CloudBlobContainer imagContainer = blobClient.GetContainerReference(Container);
CloudBlockBlob blockBlob = imagContainer.GetBlockBlobReference(filename);
blockBlob.Properties.ContentType = "image/jpg";
await blockBlob.UploadFromStreamAsync(uploadStream);
uploadStream.Close();
return true;
}
您的 uploadStream 对象的生命周期可能会在调用您的 await blockBlob.UploadFromStreamAsync(uploadStream) 方法后立即结束,导致您的 UploadImage() 方法比预期提前 exits/ends。您能否尝试将代码移动到 UploadImage() 方法的父范围?
如果您在 MVC/WebAPI 操作方法中调用 UploadImage(...)
,此操作也应该是异步的
我有一个将 base64 图像上传到 Azure 的 Web Api 函数,我使用异步任务方法来执行此操作。问题是代码执行卡在 await 字上,永远不会移动 next 来关闭流,即使在上传照片之后我也没有收到任何错误。
public async Task<bool> UploadImage(string filename, MemoryStream uploadStream)
{
var blobClient = ConnectToAzure();
CloudBlobContainer imagContainer = blobClient.GetContainerReference(Container);
CloudBlockBlob blockBlob = imagContainer.GetBlockBlobReference(filename);
blockBlob.Properties.ContentType = "image/jpg";
await blockBlob.UploadFromStreamAsync(uploadStream);
uploadStream.Close();
return true;
}
您的 uploadStream 对象的生命周期可能会在调用您的 await blockBlob.UploadFromStreamAsync(uploadStream) 方法后立即结束,导致您的 UploadImage() 方法比预期提前 exits/ends。您能否尝试将代码移动到 UploadImage() 方法的父范围?
如果您在 MVC/WebAPI 操作方法中调用 UploadImage(...)
,此操作也应该是异步的