上传后未释放文件



使用ASP.NET MVC,我正在上传zip文件并使用以下方法提取它,并且似乎仍然存在一个过程,因为我无法将其删除处理后的Windows Explorer。

这是控制器帖子:

[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;
}

您可以看到我在代码中未能关闭需要关闭的东西的地方,还是还有另一个原因?

服务器行为不能锁定客户端上的文件。因此,我确定您看到的任何锁定都是由浏览器本身引起的(因此在您的控件之外(。

您可能要考虑尝试替代浏览器并查看发生的事情。

最新更新