【发布时间】:2018-03-13 17:00:52
【问题描述】:
我有一个将 base64 图像上传到 Azure 的 Web Api 功能,我使用异步任务方法来做到这一点。问题是代码执行被 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;
}
【问题讨论】:
-
你确定它卡住而不是 uploading 吗?
await表示程序将等待异步,即不会阻塞其他线程,绝对不会阻塞主线程。完成后在原始执行上下文中恢复执行。 -
顺便说一句,您的代码发送的是 JPG 图像,而不是 Base64。 Based64 是文本。
-
我的第一个猜测是你不小心忽略了异常。在 'await blockBlob.UploadFromStreamAsync(uploadStream);' 周围添加 try/catch并将断点放入 catch
标签: c# asp.net-web-api2 task-parallel-library