Я не могу удалить изображение после загрузки в C# mvc.it показывает исключение в File.delete (путь)Процесс не может получить доступ к файлу «D: ebook ff.jpg», потому что он используется другим процессом
Исключение: процесс не может получить доступ к файлу 'D: \ книгу \ alignment11429852064.png', так как он используется другим процессом
процесс FileUpload:
public void UploadImage(HttpPostedFileBase file, FileImage upload)
{
try
{
string fileName = Path.GetFileNameWithoutExtension(file.FileName);
string fileExtension = Path.GetExtension(file.FileName);
string hashFile = fileName + DateTime.Now.GetHashCode();
string path = Path.Combine(HttpContext.Current.Server.MapPath("D\ebook" + hashFile + fileExtension));
upload.ImageFile = "D\ebook" + hashFile + fileExtension;
file.SaveAs(path);
}
catch(exception e)
{
}
}
FileImage модель
здесь я написал для удаления функции (изображения)
public ProfileImage DiscardImage(FileImage image)
{
try
{
if(File.Exists(HttpContext.Current.Server.MapPath(image.ImageFile)))
{
File.Delete(HttpContext.Current.Server.MapPath(image.ImageFile));
}
}
catch(exception e)
{
}
}
Вы уверены, что изображение не открыто в редакторе изображений? –
«потому что он используется другим процессом», часто является ложью. Это почти всегда внутри вашего собственного кода и что у вас есть другой объект, скрывающийся вокруг ожидающего быть GCed, который имеет дескриптор, открытый для файла, и что вы должны были бы теперь называть Dispose. –
О том, как мне пришлось обойти эту проблему ... удаление и переименование файлов в веб-приложении - такая боль; любой может содержать ссылку на этот файл - другой запрос (например, предварительный просмотр изображения или сто пользователей вашей сети), IIS (он обрабатывает кеширование и может удерживать его по желанию) и многое другое. И в довершение всего, некоторые изменения в файлах и каталогах могут * перезапустить все ваше приложение *. – Luaan