Tôi có một dự án ASP.NET-MVC nơi tôi cần tạo động một số hình ảnh png. Thật dễ dàng. Tôi vừa tạo ActionResult để trả về đối tượng FileSreamResult. Để tạo ra hình ảnh, tôi đã sử dụng các lớp từ System.Drawing như Bitmap và Image. Mọi thứ hoạt động tốt trên máy cục bộ và trên máy chủ sản xuất. Nhưng khi IIS trên máy chủ sản xuất tắt hồ bơi ứng dụng của tôi do không hoạt động và khởi động lại, hình ảnh thế hệ bắt đầu thất bại.Lỗi tạo hình ảnh lạ trong asp.net
Vấn đề là trong mã mà cố gắng để lưu hình ảnh vào dòng:
var imageStream = new MemoryStream();
bmp.Save(imageStream, ImageFormat.Png);
ngoại lệ là: System.Runtime.InteropServices.ExternalException (0x80004005): Một lỗi chung xảy ra trong GDI +. Vì vậy, không có nhiều giúp đỡ. Tôi đã thử một giải pháp khác và không giúp được gì. Sau khi tôi đã tìm thấy chủ đề này Alternatives to System.Drawing for use with ASP.NET?
Ý tưởng chính của chủ đề này là:
Lớp học trong không gian tên System.Drawing không được hỗ trợ để sử dụng trong Windows hoặc dịch vụ ASP.NET. Việc cố gắng sử dụng các lớp này từ bên trong một trong các loại ứng dụng này có thể gây ra các sự cố không mong muốn, chẳng hạn như hiệu suất dịch vụ bị giảm và các ngoại lệ thời gian chạy.
Vì vậy, tôi quyết định sử dụng các lớp WPF để tạo hình ảnh. Tôi viết lại tất cả các mã tạo hình ảnh, nhưng bây giờ tôi nhận được một lỗi khác sau khi khởi động lại ứng dụng. Ngoại lệ: System.Runtime.InteropServices.COMException (0x88982F8A): Ngoại lệ từ HRESULT: 0x88982F8A. Điều này xảy ra khi tôi cố lưu PngBitmapEncoder của tôi vào luồng
var stream = new MemoryStream();
encoder.Save(stream);
Có thể ai đó gặp phải vấn đề này hoặc chỉ có ý tưởng?