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

本文关键字:文件 访问 进程 删除 | 更新日期: 2023-09-27 18:34:07

我使用 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));

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

事实上,我想知道哪个进程可能正在访问此文件。 以及以前页面(控制器)中的任何代码是否可能导致此问题?我已经搜索过,但没有发现任何有用的东西。

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

可以检查运行应用程序池的标识,然后检查该帐户的权限。要检查哪个进程锁定了文件,请尝试此链接。

当使用实现 IDisposable 接口的类型对象时,您应该在不再需要对象时立即调用dispose方法。

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

因此,最好在不再需要资源时清理资源。