2013-10-07 78 views
1

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

您是否檢查過該文件夾的權限? –

+0

是的,我已經授予這個名字的所有權限 – Hamed

+1

你做了更改後是否調用了'dispose()'?嘗試調用'dispose()'它會釋放文件資源。 –

回答

1

您可以檢查應用程序的應用程序池的運行身份,然後檢查該帳戶的權限。要檢查哪個進程鎖定了該文件,請嘗試this link.

0

使用實現IDisposable接口的類型的對象時,只要不再需要對象,就應該調用dispose方法。

CLR的垃圾收集器很聰明,它在執行垃圾收集時釋放資源。但問題是垃圾收集器不會在控件離開當前作用域時立即收集對象。但是當第0代的存儲器已滿時,它會收集它,或者通過在代碼中調用collect方法強制執行。

當不再需要資源時可以更好地清理資源。