gpt4 book ai didi

azure - "Cannot access a closed file."将文件上传到 .Net Core 3 中的 Azure Blob 存储时

转载 作者:行者123 更新时间:2023-12-02 06:38:42 25 4
gpt4 key购买 nike

我正在尝试将文件上传到 Azure Blob 存储,但收到以下消息:

“无法访问已关闭的文件”

这是随机的,如果我尝试加载同一张图像两次,第一次可能会加载,第二次可能会导致错误

这是我的上传功能

private async Task<string> UploadResizedToStorage(IFormFile file, string fileName, int thumbnailWidth, IImageEncoder encoder)
{
try
{
using MemoryStream streamReader = new MemoryStream();
await file.CopyToAsync(streamReader);
var accountName = _config.GetValue<string>("AzureStorage:AccountName");
var accountKey = _config.GetValue<string>("AzureStorage:AccountKey");
var imgContainer = _config.GetValue<string>("AzureStorage:ImageContainer");
var storageCredentials = new StorageCredentials(accountName, accountKey);
var storageAccount = new CloudStorageAccount(storageCredentials, true);
var blobClient = storageAccount.CreateCloudBlobClient();
var container = blobClient.GetContainerReference(imgContainer);
var blockBlob = container.GetBlockBlobReference(fileName);
streamReader.Position = 0;
await blockBlob.UploadFromStreamAsync(streamReader, streamReader.Length);
return blockBlob.SnapshotQualifiedStorageUri.PrimaryUri.ToString();
}
catch(Exception e)
{
_logger.LogError("UploadResizedToStorage "+
e.Message+
" Arquivo:"+
fileName);
return "";
}

}

该应用程序通过 Azure 应用程序服务托管在 Docker 上

错误

2021-06-25T18:00:20.174050985Z: [INFO]  [41m[30mfail[39m[22m[49m: ruralbackend.Service.StorageAzure[0]
2021-06-25T18:00:20.174102685Z: [INFO] UploadResizedToStorage Cannot access a closed file. Arquivo:46-6.jpg

最佳答案

发生这种情况可能是因为您的 MemoryStream(由于某种原因)在执行 UploadFromStreamAsync 方法之前/期间关闭。

删除 using 关键字,并在执行结束时在 finally block 中手动处置 streamReader 对象。这将确保只有当流完全达到其目的时才会被处置。

关于azure - "Cannot access a closed file."将文件上传到 .Net Core 3 中的 Azure Blob 存储时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68132897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com