Ich habe einen WebAPI-Endpunkt (in IIS gehostet), der Bilder aus einer Datenbank (Byte-Array) liest und sie im PNG-Format zurückgibt. Dieser Code ist einfach:
%Vor% Ich habe drei Webserver und auf einem davon verursacht der obige Code diesen Fehler: A generic error occurred in GDI+.
at at System.Drawing.Image.Save()
.
Auf den Servern werden verschiedene Betriebssystemversionen ausgeführt:
Ich habe den obigen Code geändert, um ein JPEG anstelle eines PNGs zurückzugeben, und behebt das Problem.
%Vor%Ich muss PNG-Bilder senden, damit ich die Ursache finden muss.
Ich habe den Code konvertiert, um WPF-Klassen (System.Windows.Media) anstelle von Windows Form-Klassen zu verwenden. Das Ergebnis ist interessant: Ich bekomme einen Fehler beim Erstellen von PNGs. Diesmal ist der Fehler The component registration is invalid. (Exception from HRESULT: 0x88982F8A)
at System.Windows.Media.Imaging.BitmapEncoder.SaveFrame()
Könnte es sein, dass auf meinem Server eine Low-Level-Komponente fehlt, die zum Speichern von PNGs erforderlich ist?
Danke
@Chris Pratt bat darum, den Code zu sehen, der die Bilder aus dem Byte-Array erzeugt. Zwischen dem WebAPI-Code und dem SqlDataReader-Aufruf gibt es mehrere Ebenen, aber hier ist der Code, der das aus der Datenbank gelesene Byte-Array konvertiert.
%Vor%1) Das .NET Framework & gt; = 3.0 sollte einen eingebauten Encoder haben. Überprüfen Sie, ob es einen Encoder für den richtigen Bildmime-Typ gibt.
%Vor%(Sie benötigen eine Suche nach Encodern)
%Vor%Dann können Sie versuchen, mit Ihrem Lieblings-Encoder zu speichern oder die Bytes
zu bekommen %Vor%2) Manchmal hatte ich Probleme beim Speichern indizierter Bilder. Sehen Sie sich yourImage.PixelFormat an und versuchen Sie, das Bild gegebenenfalls in ein anderes zu konvertieren.
Tags und Links asp.net-web-api wpf c# iis windows-server-2012-r2