删除文件:进程无法访问该文件

时间:2013-10-07 07:32:40

标签: c# asp.net-mvc file-io exception-handling

我使用mvc并且我有一个控制器,它接受一个文件名并从服务器中删除它, 当我在本地机器上使用visual studio开发服务器时,这个页面(控制器)成功删除了文件,但在生产服务器上我收到以下错误:

The process cannot access the file 'filename' because it is being used by another process

System.IO.File.Delete(Server.MapPath("~/content/myFolder/" + id));

在这行代码之前,我只是做一个自定义请求验证,不要访问该文件。 此文件已在此页面之前由另一个页面保存。

实际上我想知道哪个进程可能正在访问此文件。如果以前页面(控制器)中的任何代码可能导致此问题? 我搜索过但发现没什么用处。

2 个答案:

答案 0 :(得分:1)

您可以检查运行应用程序的应用程序池的身份,然后检查该帐户的权限。要检查哪个进程锁定了该文件,请尝试this link.

答案 1 :(得分:0)

当使用实现IDisposable接口的类型的对象时,一旦不再需要对象,就应该调用dispose方法。

CLR的垃圾收集器非常智能,它在执行垃圾收集时释放资源。但问题是垃圾收集器一旦控制离开当前范围就不会收集对象。但是当第0代的内存已满或者你通过在代码中调用collect方法强制它时它会收集它。

在不再需要资源时更好地清理资源。