2012-03-09 8 views
5

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?

Trả lời

0

Tôi không thể trả lời câu hỏi của bạn như vậy nhưng nếu điều này chỉ xảy ra vì ứng dụng của bạn tắt, tại sao không đặt Idle thành 0 (app pool -> App -> Advanced Options), sau đó nó sẽ không tắt.

Đây có thể là phương sách cuối cùng nếu bạn không thể nhận được câu trả lời phù hợp.

1

Đây là câu trả lời không thỏa mãn ...

Tôi đã gặp lỗi tương tự khi lần đầu tiên triển khai chức năng tạo hình ảnh mới của mình.

Tôi đã dừng hồ bơi ứng dụng tương ứng, khởi động lại nó và hoạt động.