使用异步任务 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(...),此操作也应该是异步的