尝试删除XML文件会引发“进程无法访问文件...”错误

时间:2011-07-20 15:27:15

标签: c# asp.net xml delete-file

我有一个应用程序可以读取用户上传的XML文档。如果文件没有正确的节点,则删除该文件并通知用户。

但是,当我尝试在代码和Windows资源管理器中删除文件时,该文件始终处于锁定状态。它一直处于锁定状态,直到我在IE中刷新页面。

myDoc.Load(FileUpload2.FileContent);
string XMLpath = Server.MapPath(ConfigurationSettings.AppSettings["PDFLocation"]) + FileUpload2.FileName;
myDoc.Save(XMLpath);
file = new FileInfo(XMLpath);

//here I check if the file is valid. If not, delete

file.Delete(); //This is where it throws the "cannot access the file" error

错误的全文:

The process cannot access the file 'C:\project\files\file.xml' because it is being used by another process. 

我尝试在删除声明之前输入FileUpload2.FileContent.Dispose();FileUpload2.Dispose();,但没有运气。

如何发布文件以进行删除?

4 个答案:

答案 0 :(得分:2)

保存后需要关闭文件。如果您的应用程序打开文件,则无法删除该文件。

答案 1 :(得分:2)

在您知道XML文件有效之前,不应将XML文件保存到磁盘。

要回答您的问题,请在省略的代码中的某个位置打开FileStream 您需要Dispose(),最好使用using语句。

答案 2 :(得分:1)

我不知道myDoc的类型是什么......但如果它有方法“Close”或“Dispose”,那么在尝试删除之前调用它...

编辑: 如果它没有这样的方法,那么myDoc = null;可以提供帮助。

答案 3 :(得分:0)

保存文件后,您需要关闭它并刷新内存。