Как удалить файлы, которые были только что загружены на сервер и все еще заблокированы сервером? - PullRequest
1 голос
/ 31 августа 2010

Моя система Загружает файлы на сервер IIS, а затем я манипулирую ими, и после того, как я все сделаю, мне нужно удалить исходный файл, проблема в том, что IIS «захватывает» файл, и я не могу его удалить,Когда я закрываю процессы, я могу удалить их вручную с сервера, но пока я не закрываю процедуры, я даже не могу этого сделать ...

Я использую: File.Delete(Server.MapPath(OriginalFileVirtualPath));, чтобы удалить файл.

ps на данный момент я использую .net сервер, а не полностью активный IIS, но я не думаю, что проблема там ... Это даже имеет смысл, когда я загружаю файл всервер, он не даст удалить его, но я уверен, что есть обходной путь ...

10x: -)

Ответы [ 2 ]

4 голосов
/ 31 августа 2010

Вам просто нужно закрыть поток файлов. После этого вы можете использовать метод File.Delete().

Хорошей практикой является выполнение манипуляций внутри блока using () { } и удаление после использования блока:

using (FileStream stream = File.Open(filePath, FileMode.Open))
{
    // Manipulation stuff
}
File.Delete(filePath);
3 голосов
/ 31 августа 2010

Вы помните, чтобы закрыть файл после того, как вы закончили с ним манипулировать?

Если файл все еще открыт, когда вы пытаетесь удалить его, он может завершиться ошибкой.(Я должен был бы перепроверить документы).Но неспособность закрыть файл, безусловно, приведет к тому, что вы наблюдаете симптом, когда IIS видит файл заблокированным, пока вы не закроете свое приложение.

...