【问题标题】:After downloading a zip from azure blob storage cant access the zip从 azure blob 存储下载 zip 后无法访问 zip
【发布时间】:2021-08-09 09:57:45
【问题描述】:

我有一个 asp.net 核心 web api 控制器,它正在使用此代码从 azure blob 存储下载一个 zip 文件。

        CloudStorageAccount mycloudStorageAccount = CloudStorageAccount.Parse(storageAccount_connectionString);
        CloudBlobClient blobClient = mycloudStorageAccount.CreateCloudBlobClient();

        CloudBlobContainer container = blobClient.GetContainerReference(azure_ContainerName);
        CloudBlockBlob cloudBlockBlob = container.GetBlockBlobReference(filetoDownload);

        FileStream file = File.OpenWrite(@"D:\Downloads\"+filetoDownload);
        cloudBlockBlob.DownloadToStreamAsync(file);
        Console.WriteLine("Download completed!");

下载后我尝试使用另一个控制器使用此代码解压缩。

        string zipPath = @"D:\Downloads\AUSAssetData_4F3CDD1E-B0B1-4FD9-9663-08B5DE0CE014_DMFPackage.zip";
        string extractPath = @"D:\Downloads\Extracted";
        ZipFile.ExtractToDirectory(zipPath, extractPath, false);

但在尝试解压缩文件时,我收到此错误 System.IO.IOException: The process cannot access the file。我想知道有没有一种方法可以在不停止整个服务的情况下停止以前的控制器进程,以便我的解压缩控制器可以访问它。

【问题讨论】:

    标签: c# azure asp.net-core


    【解决方案1】:

    您收到此错误的原因是因为您的 FileStream 对象仍处于打开状态并且已锁定文件。您将需要关闭/处置该对象。

    尝试使用以下代码:

    using (FileStream file = File.OpenWrite(@"D:\Downloads\"+filetoDownload))
    {
        await cloudBlockBlob.DownloadToStreamAsync(file);//You will need to await this process or use DownloadToStream method.
        Console.WriteLine("Download completed!");
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2019-09-05
      • 2021-08-11
      • 2023-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 2021-03-03
      相关资源
      最近更新 更多