Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试图删除一个XML文件时抛出;进程无法访问该文件…”;错误_C#_Asp.net_Xml_Delete File - Fatal编程技术网

C# 试图删除一个XML文件时抛出;进程无法访问该文件…”;错误

C# 试图删除一个XML文件时抛出;进程无法访问该文件…”;错误,c#,asp.net,xml,delete-file,C#,Asp.net,Xml,Delete File,我有一个小应用程序,可以读取用户上传的XML文档。如果文件没有正确的节点,则会删除该文件并通知用户 但是,无论是在代码中还是通过windows资源管理器,当我尝试删除该文件时,该文件始终被锁定。在我刷新IE中的页面之前,它一直处于锁定状态 myDoc.Load(FileUpload2.FileContent); string XMLpath = Server.MapPath(ConfigurationSettings.AppSettings["PDFLocation"]) + FileUploa

我有一个小应用程序,可以读取用户上传的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()在delete语句之前,但没有运气


如何释放要删除的文件?

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

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

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

为了回答您的问题,您在省略的代码中留下了一个打开的
FileStream


您需要
Dispose()

为了回答您的问题,您在省略的代码中留下了一个打开的
FileStream


你需要
Dispose()
它,最好使用
using
语句。

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

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

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

编辑:
如果没有这样的方法,那么
myDoc=null可能会有帮助。

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

编辑:
如果没有这样的方法,那么
myDoc=null可能会有帮助。

好的,太棒了。我该怎么做?@Jimmy-很难从代码中看出,但是如果您使用打开XML文件,那么只需使用。如果您只是将一个字符串传递到XMLDocument.Load方法中,那么不要这样做。相反,您可以使用IOStream自己打开文件,并将该流传递给XMLDocument.Load函数。你需要一个例子吗?问题是检查文件的代码不是我自己的。我只是认为这不起作用是我的错。事实证明,问题出在这段代码中。有一个文件流没有打开。我把它修好了,它就像一个符咒。好的,太棒了。我该怎么做?@Jimmy-很难从代码中看出,但是如果您使用打开XML文件,那么只需使用。如果您只是将一个字符串传递到XMLDocument.Load方法中,那么不要这样做。相反,您可以使用IOStream自己打开文件,并将该流传递给XMLDocument.Load函数。你需要一个例子吗?问题是检查文件的代码不是我自己的。我只是认为这不起作用是我的错。事实证明,问题出在这段代码中。有一个文件流没有打开。我把它修好了,效果很好。