Приложение ASP.NET на моем сервере начинает бросать исключение GDI + после запуска в течение нескольких дней. После перезапуска сервера все работает нормально в течение нескольких дней, а затем внезапно это исключение происходит снова. После первого раза это происходит каждый раз, когда я пытаюсь сохранить изображение PNG, пока я не перезапущу его снова.GDI + исключение при сохранении изображения в формате PNG
Когда я пытаюсь сохранить изображение в формате JPEG, он отлично работает.
Когда я запускаю этот код из моего проекта, он не:
var path = @"C:\Project\images\logo.png";
var image = Image.FromFile(path);
using (var ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Png); // Fails here on GDI+ exception.
//image.Save(ms, ImageFormat.Jpeg); // JPEG works somehow
}
снова: Когда я перезагружать удаленный рабочий стол и запустить этот код, он работает в течение нескольких дней, и в какой-то момент вдруг начинает терпеть неудачу вновь и вновь.
Я пробовал:
Чтобы сделать консольное приложение с тем же кодом и запустить его в ДДП, где проект. Все прошло отлично!
Множество различных вариантов кодов, которые были предложены более чем в 10 статьях, которые я читал на эту тему.
GCI.Collect() - без помощи.
Проверено все папки, у которых есть права на запись (возможно, что-то есть с IIS?).
Подробнее.
Я думаю, что это должно быть какая-то конфигурация, которая внезапно меняется из-за чего-то, и я не могу понять, что это может быть.
Попробуйте использовать 'Image img = Image.FromStream (новый MemoryStream (File.ReadAllBytes (путь)); '. См. Http://stackoverflow.com/questions/788335/why-does-image-fromfile-keep-a-file-handle-open-sometimes –
Формат изображения - не настоящая причина. Скорее: вы пытаетесь перезаписать оригинал (png). См. [Здесь] (http://stackoverflow.com/questions/37736815/overwrite-image-picturebox-in-c-sharp/37741101?s=1|5.7472#37741101) – TaW
Так что же это за исключением? – Evk