UploadFromStreamAsync到Azure存储上的静默故障

时间:2019-09-19 14:40:46

标签: c# asp.net-core azure-storage asp.net-core-2.2 azure-blob-storage

我正在将电子邮件上传到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。不确定模拟器版本可能是问题吗?或者是其他东西? Cos模拟器运行正常。

我在.NET Core 2.2.0解决方案中拥有它。

2 个答案:

答案 0 :(得分:0)

一个可能的原因是Blob存储客户端库在您这边过时了。

请尝试使用带有存储模拟器5.10的最新版本的blob存储客户端库Microsoft.Azure.Storage.Blob 11.0.1

答案 1 :(得分:0)

我解决了此问题,删除了await,并在UploadFromStreamAsync(stream)之后使用.Wait()。不可思议但真实。 显然,您不能使用异步方法。