使用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;
}
你能看到代码中的哪些地方我没有关闭需要关闭的东西,还是有其他原因?
答案 0 :(得分:1)
服务器行为无法锁定客户端上的文件。因此,我90%确定您看到的任何锁定都是由浏览器本身造成的(因此无法控制)。
您可能需要考虑尝试使用备用浏览器并查看会发生什么。