0

我最近偶然发现了这个问题:在我的应用程序中,我为用户提供了从列表中下载多个文件的选项,方法是将它们放入 .zip 文件夹然后下载。我自然希望下载完成后删除该 .zip 文件夹。这是我的方法:

       try {

            Response.Clear();
            Response.ContentType = "application/zip";
            Response.AddHeader("Content-Disposition", "attachment; filename=filename.zip");
            Response.TransmitFile(archive);
            Response.Flush();
            success = success && true;

            return success;

        } catch {

            return false;

        } finally {

            System.IO.File.Delete(archive);
            Response.End();

        }

现在,布尔值只是表示下载是否成功,我认为它们现在并不重要。我认为这是如何工作的,程序首先尝试将文件传输到客户端,如果没有发生错误,它会跳过 catch 块,只有下载后才会删除archive文件。

但是,我经常收到一条错误The process cannot access the file because it is being used by another process.消息System.IO.File.Delete(archive);。这并不是每次都会发生,据我所知,这是相当随机的。谁能提示我解决方案?

4

1 回答 1

0
 Response.ContentType = ContentType;
    Response.AppendHeader("Content-Disposition",
                    "attachment; filename=myFile.txt");
    Response.WriteFile(Server.MapPath("~/uploads/myFile.txt"));
    Response.Flush();
    System.IO.File.Delete(Server.MapPath("~/uploads/myFile.txt"));
    Response.End();
于 2016-08-16T09:59:03.743 回答