我有一个Web Api功能,它将base64图像上传到Azure,我使用异步任务方法来做到这一点。问题是代码执行会被await字卡住,并且永远不会移动到关闭流,即使在上传照片后我也没有收到任何错误。
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;
}
答案 0 :(得分:1)
如果您在MVC / WebAPI操作方法中调用UploadImage(...)
,则该操作也应该是异步的
答案 1 :(得分:-1)
您的uploadStream对象的生命周期可能在调用await blockBlob.UploadFromStreamAsync(uploadStream)方法后立即结束,导致您的UploadImage()方法比预期更早退出/结束。您可以尝试将代码移动到UploadImage()方法的父作用域吗?