我使用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));
在这行代码之前,我只是做一个自定义请求验证,不要访问该文件。 此文件已在此页面之前由另一个页面保存。
实际上我想知道哪个进程可能正在访问此文件。如果以前页面(控制器)中的任何代码可能导致此问题? 我搜索过但发现没什么用处。
答案 0 :(得分:1)
您可以检查运行应用程序的应用程序池的身份,然后检查该帐户的权限。要检查哪个进程锁定了该文件,请尝试this link.
答案 1 :(得分:0)
当使用实现IDisposable接口的类型的对象时,一旦不再需要对象,就应该调用dispose
方法。
CLR的垃圾收集器非常智能,它在执行垃圾收集时释放资源。但问题是垃圾收集器一旦控制离开当前范围就不会收集对象。但是当第0代的内存已满或者你通过在代码中调用collect
方法强制它时它会收集它。
在不再需要资源时更好地清理资源。