2012-03-09 17 views
5

Mam projekt ASP.NET-MVC, w którym potrzebuję dynamicznie generować obrazy png. To łatwe. Po prostu tworzę ActionResult, który zwraca obiekt FileSreamResult. Do generowania obrazów użyłem klas z System.Drawing takich jak Bitmap i Image. Wszystko działa dobrze na lokalnym komputerze i na serwerze produkcyjnym. Ale kiedy IIS na serwerze produkcyjnym zamyka pulę aplikacji z powodu braku aktywności i uruchamia ją ponownie, generowanie obrazów zaczyna się nie udać.Dziwny błąd generowania obrazu w asp.net

Problem był w kodzie, który próbuje zapisać obraz do strumienia:

var imageStream = new MemoryStream(); 
    bmp.Save(imageStream, ImageFormat.Png); 

Wyjątkiem jest: System.Runtime.InteropServices.ExternalException (0x80004005): Ogólny błąd wystąpił w GDI +. Więc nie ma zbytniej pomocy. Próbowałem różnych rozwiązań i nic nie pomagało. Po znalazłem ten temat Alternatives to System.Drawing for use with ASP.NET?

Główną ideą tego tematu to:

Klasy w przestrzeni nazw System.Drawing nie są obsługiwane do użytku w komputerze z systemem Windows lub usługi ASP.NET. Próba użycia tych klas z jednego z tych typów aplikacji może powodować nieoczekiwane problemy, takie jak obniżona wydajność usługi i wyjątki czasu wykonywania.

Postanowiłem więc użyć klas WPF do wygenerowania obrazów. Przepisałem cały kod generowania obrazu, ale teraz pojawia się kolejny błąd po restarcie puli aplikacji. Wyjątek: System.Runtime.InteropServices.COMException (0x88982F8A): Wyjątek od HRESULT: 0x88982F8A. Dzieje się tak, gdy próbuję zapisać mój PngBitmapEncoder strumień

var stream = new MemoryStream(); 
encoder.Save(stream); 

Może ktoś napotkał ten problem lub po prostu ma jakieś pomysły?

Odpowiedz

0

Nie mogę odpowiedzieć na twoje pytanie jako takie, ale jeśli dzieje się tak tylko dlatego, że twoja aplikacja się wyłącza, dlaczego nie ustawić jej stanu bezczynności na 0 (pula aplikacji -> aplikacja -> zaawansowane opcje), a następnie nie będzie wyłączone.

Może to być ostatnia deska ratunku, jeśli nie możesz uzyskać odpowiedniej odpowiedzi.

1

Oto niezadowalająca odpowiedź ...

byłem coraz ten sam błąd po raz pierwszy wdrożone moją nową funkcjonalność generowania obrazu.

Zatrzymałem odpowiednią pulę aplikacji, ponownie uruchomiłem ją ponownie i zadziałało.

Powiązane problemy