【发布时间】:2021-08-07 10:08:42
【问题描述】:
我正在开发一个 ASP.NET Core 5 项目。我有这个动作方法:
public async Task<IActionResult> CreateV3EnterCheckFile(IFormFile MarksFile)
{
var filesCount = Directory.GetFiles("Uploads").Length;
string path = Path.Combine("Uploads", filesCount + 1 + ".xlsx");
await MarksFile.SaveToAsync(path);
var xlImporter = new XLImporter();
var importedData = await xlImporter.ImportSheetAsync(path, 0);
var r = (from x in importedData select new { ID = x[0], StudentId = x[1] }).ToList();
System.IO.File.Delete(path);
return View();
}
我尝试获取用户上传的IFormFile 文件以将其保存在服务器上并使用我的一个项目(使用LinqToExcel 库)查询它。
我正在查询数据,一切都很完美我还有一个问题,就是这行代码:
System.IO.File.Delete(path);
它引发异常,消息是我无法删除该文件,因为它仍在被另一个进程使用。
我很确定这个过程与LinqToExcel库有关。
更多详情:
SaveToAsync是我自己创建的扩展方法就是它的定义
public static Task SaveToAsync(this IFormFile file, string pathToSaveTo)
{
return Task.Factory.StartNew(() =>
{
using (Stream fileStream = File.Open(pathToSaveTo, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
{
file.CopyTo(fileStream);
}
});
}
请 - 是否有任何方法、方法或解决方案可以删除此文件,即使它正在被另一个进程使用?
提前非常感谢。
【问题讨论】:
-
您应该确定哪个进程正在使用您的文件,而不是猜测。强制删除感觉像是一种解决方法
-
好的,你能给我一个方法来知道哪个进程确切地使用了这个文件吗?
-
我想你可以使用windows的handle.exe来查找。也许还可以解析这个问题中建议的程序的输出:stackoverflow.com/questions/317071/…
标签: c# asp.net-core io .net-5 linq-to-excel