上传后文件未被释放

时间:2017-06-01 14:10:09

标签: c# asp.net .net asp.net-mvc

使用Asp.Net MVC,我正在上传一个zip文件并使用以下方法解压缩,并且似乎还有一个进程仍然附加到它,因为我无法在处理后的Windows资源管理器中将其删除。

这是控制器帖子:

[HttpPost]
public ActionResult ImportZip(HttpPostedFileBase zip)
{
    try
    {
        if (zip == null)
            throw new Exception("Please select a file to import");

        var result = new ContentManagementImporter(EducorDbRepo).ImportZipFile(zip);

        ViewData[ViewDataKeys.SuccessMessage] = result;
        return View("Import");
    }
    catch (Exception ex)
    {
        SetViewError(ex);
        return View("Import");
    }
}

这是处理上传文件的方法:

private static Dictionary<string, string> UnzipFiles(HttpPostedFileBase zipFile)
{
    var files = new Dictionary<string, string>();

    using (var archive = new ZipArchive(zipFile.InputStream))
    {
        foreach (var file in archive.Entries)
        {
            if (file == null)
                continue;

            using (var stream = file.Open())
            using (var reader = new StreamReader(stream))
            {
                var markup = reader.ReadToEnd();
                files.Add(file.Name, markup);
            }
        }
    }

    zipFile.InputStream.Close();

    return files;
}

你能看到代码中的哪些地方我没有关闭需要关闭的东西,还是有其他原因?

1 个答案:

答案 0 :(得分:1)

服务器行为无法锁定客户端上的文件。因此,我90%确定您看到的任何锁定都是由浏览器本身造成的(因此无法控制)。

您可能需要考虑尝试使用备用浏览器并查看会发生什么。