Ứng dụng ASP.NET trên máy chủ của tôi bắt đầu ném ngoại lệ GDI + sau khi chạy trong vài ngày. Sau khi tôi khởi động lại máy chủ, tất cả các công trình tốt cho một vài ngày và sau đó đột nhiên ngoại lệ này xảy ra một lần nữa. Sau lần đầu tiên nó xảy ra, nó xảy ra mỗi khi tôi cố gắng để lưu một hình ảnh PNG, cho đến khi tôi khởi động lại một lần nữa.GDI + ngoại lệ khi lưu hình ảnh ở định dạng PNG
Khi tôi cố gắng lưu hình ảnh trong JPEG, nó hoạt động tốt.
Khi tôi chạy mã này từ dự án của tôi, nó không thành công:
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
}
Một lần nữa: Khi tôi khởi động lại máy tính để bàn từ xa và chạy mã này, nó làm việc cho một vài ngày và tại một số thời điểm đột nhiên bắt đầu thất bại hơn và hơn.
tôi đã cố gắng:
Để thực hiện một ứng dụng giao diện điều khiển với cùng mã và chạy nó trong RDP nơi dự án là. Nó hoạt động tốt!
Rất nhiều biến thể khác nhau của mã được đề xuất trong hơn 10 bài viết tôi đã đọc về chủ đề này.
GCI.Collect() - không cần trợ giúp.
Kiểm tra tất cả các thư mục có quyền ghi (có thể có thứ gì đó với IIS?).
Thêm.
Tôi nghĩ rằng cần có một số cấu hình đột nhiên thay đổi do điều gì đó và tôi không thể hiểu nó là gì.
Hãy thử sử dụng 'Image img = Image.FromStream (MemoryStream mới (File.ReadAllBytes (đường dẫn)));'. Xem http://stackoverflow.com/questions/788335/why-does-image-fromfile-keep-a-file-handle-open-sometimes –
Định dạng hình ảnh không phải là lý do thực sự. Nhiều khả năng: Bạn cố gắng ghi đè lên bản gốc (png). Xem [ở đây] (http://stackoverflow.com/questions/37736815/overwrite-image-picturebox-in-c-sharp/37741101?s=1|5.7472#37741101) – TaW
Vậy ngoại trừ chính xác là gì? – Evk