2013-10-07 3 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

Да Я предоставил все разрешения для этого foder – Hamed

+1

вы вызвали 'dispose()' после внесения изменений? попробуйте вызвать 'dispose()', он освободит файловые ресурсы. –

ответ

1

Вы можете проверить идентификатор, под которым запущен пул приложений вашего приложения, а затем проверить разрешения для этой учетной записи. Чтобы проверить, какой процесс заблокировал файл, попробуйте this link.

0

При использовании объекта типа, реализующего интерфейс IDisposable, вы должны вызвать метод dispose, как только вам не нужен объект.

Мусороуборочный комбайн CLR является умным, и он выделяет ресурсы, когда он выполняет сбор мусора. но проблема заключается в сборщике мусора, который не собирает объект, как только элемент управления покидает текущую область. но он будет собирать его, когда память генерации 0 заполнена или вы принудительно вызываете метод collect в свой код.

так лучше очищать ресурсы, когда они больше не нужны.

Смежные вопросы