Benutzer mit den meisten Antworten
A generic error occurred in GDI+. - Probleme beim Hosting

Frage
-
Hallo,
Ich habe meine asp.net Seite gehoste, kriege jedoch nach ausführung meines Codes folgenden Fehler, den ich beim lokalen testen nicht bekomme.
Komisch ist das in der Fehlermeldung meine lokalen Pfade angegeben sind. Woran kann das liegen?
P.S.: Ich habe meinen Usernamen durch xx ersetzt.
Server Error in '/hairpinASP' Application. A generic error occurred in GDI+. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [ExternalException (0x80004005): A generic error occurred in GDI+.] System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +461268 System.Drawing.Image.Save(String filename, ImageFormat format) +69 RodeoSmallBusiness.execute.drawNow(Object ypbreite, Object xphoehe, Object ema, Object geo) in C:\Users\xx\Documents\Visual Studio 2010\Projects\RodeoSmallBusiness\RodeoSmallBusiness\excecute\execute.aspx.vb:1061 RodeoSmallBusiness.execute.weiter(Object inputarray, Object xphoehe, Object ypbreite, Object af) in C:\Users\xx\Documents\Visual Studio 2010\Projects\RodeoSmallBusiness\RodeoSmallBusiness\excecute\execute.aspx.vb:928 RodeoSmallBusiness.execute.einlesen() in C:\Users\xx\Documents\Visual Studio 2010\Projects\RodeoSmallBusiness\RodeoSmallBusiness\excecute\execute.aspx.vb:283 RodeoSmallBusiness.execute.btnBerechnen_Click(Object sender, EventArgs e) in C:\Users\xx\Documents\Visual Studio 2010\Projects\RodeoSmallBusiness\RodeoSmallBusiness\excecute\execute.aspx.vb:1234 System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563 Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1
Antworten
-
Hi,
Das kann ich leider nicht sagen. Hab auch schon ausprobiert die Bilder im Root Verzeichnis abzulegen ebenfalls kein Erfolg.
Wie kann ich den rausfinden (Script o.ä.??) ob ich Ändern Rechte habe? Ich kann bei dem Provider so gut wie gar nichts einstellen.
Einfach probieren, bspw. per System.IO.File.WriteAllText( "X:\Ordner\Datei.txt", "Abc" ) eine Textdatei zu schreiben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert megahairpin Samstag, 12. März 2011 17:48
Alle Antworten
-
Hi,
das kann (leider) an vielem liegen. Ich tippe auf ein Grafikformat, welches nicht verarbeitet werden kann, ein Jpeg mit mehreren Bildern in einer Datei (bspw. Thumbnail und Normalgröße) oder auch einfach fehlerhafte Werte in den Encoderparametern bzw. der CodecInfo.
Am hilfreichsten wäre es, wenn Du genau die Grafikdatei, die hier Probleme macht, nimmst und ein aufs absolute Minimum reduziertes Beispiel aufbaust. Wenn dort auch nicht nachvollziehbar ist, wo das Problem nun liegt, poste beides mal hier.
BTW: GDI+ und Co. sind in ASP.NET nicht supported (sollten aber eigentlich dennoch funktionieren, Ausnahmen bestätigen leider oft die Regel :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Stefan,
Erstmal vielen dank für deine Antwort!!!
Ich hab eher das Gefühl das da was mit den Server Einstellungen nicht passt oder das Problem ganz woanders begraben ist. Wie schon erwähnt wenn ich den Code lokal auf meinem IIS laufen lasse läuft es ohne Probleme. Sobald ich es aber auf den Server hochlade und ausführe (web.config geändert) kommt diese Fehlermeldung s.o. . Ich poste hier mal den Code der die Graphik erstellt.
Was auch noch sein könnte, das auf dem Web Server das 3.5 Framework läuft und bei mir lokal das 4.0 ...
Sub drawNow(ByVal ypbreite, ByVal xphoehe, ByVal ema, ByVal geo) Dim gt(0, 1), g1(1, 4), gmax As Double 'Versuchsweise Graphische Ausgabe Dim schrift As System.Drawing.Font = New System.Drawing.Font("Arial", 10) Dim gtext As String Dim mittex, gtemp As Double Dim mittey As Double Dim ueberstand As Double Dim k, k3 As Integer k = ema.GetUpperBound(0) ueberstand = Val(boxueberstand.Text) Do While ema(k, 3 + gtemp * 4) <> 0 gtemp = gtemp + 1 Loop Dim width As Integer = ypbreite Dim height As Integer = xphoehe Dim bmp As New Bitmap(width + 30, height + 30) Dim g As Graphics = Graphics.FromImage(bmp) Dim rectToFill As New System.Drawing.Rectangle() Dim stringFormat As New StringFormat() stringFormat.FormatFlags = StringFormatFlags.DirectionVertical g.SmoothingMode = SmoothingMode.HighQuality rectToFill.Width = width + 30 rectToFill.Height = height + 300 g.FillRectangle(Brushes.White, rectToFill) g.DrawRectangle(Pens.Black, 20, 20, width, height) g.DrawString(CStr(xphoehe), schrift, Brushes.Black, 0, xphoehe / 2, stringFormat) g.DrawString(CStr(ypbreite), schrift, Brushes.Black, ypbreite / 2, 0) 'Graphik end gt(0, 0) = ueberstand '% gt = temporärer Startpunkt links unten gt(0, 1) = ueberstand For k2 = 1 To gtemp '% Für jeden Schritt For k3 = 1 To ema(k, 4 + (k2 - 1) * 4) '% Für jedes Exemplar gmax = ema(k, 1 + (k2 - 1) * 4) Xor ema(k, 3 + (k2 - 1) * 4) - 2 ' % Index der Primärkoordinate For k4 = 0 To 4 g1(0, k4) = gt(0, 0) g1(1, k4) = gt(0, 1) Next g1(0, 2) = g1(0, 2) + geo(ema(k, 2 + (k2 - 1) * 4), 2 + gmax) - 2 * ueberstand g1(0, 3) = g1(0, 3) + geo(ema(k, 2 + (k2 - 1) * 4), 2 + gmax) - 2 * ueberstand g1(1, 1) = g1(1, 1) + geo(ema(k, 2 + (k2 - 1) * 4), 3 - gmax) - 2 * ueberstand g1(1, 2) = g1(1, 2) + geo(ema(k, 2 + (k2 - 1) * 4), 3 - gmax) - 2 * ueberstand gtext = geo(ema(k, 2 + (k2 - 1) * 4), 0) + 1 'Zuordnung der Punkte Dim punkt1 As PointF = New PointF(g1(0, 0) + 20, g1(1, 0) + 20) Dim punkt2 As PointF = New PointF(g1(0, 1) + 20, g1(1, 1) + 20) Dim punkt3 As PointF = New PointF(g1(0, 2) + 20, g1(1, 2) + 20) Dim punkt4 As PointF = New PointF(g1(0, 3) + 20, g1(1, 3) + 20) g.DrawLine(Pens.Black, punkt1, punkt2) g.DrawLine(Pens.Black, punkt2, punkt3) g.DrawLine(Pens.Black, punkt3, punkt4) g.DrawLine(Pens.Black, punkt4, punkt1) mittex = (punkt1.X + punkt2.X + punkt3.X + punkt4.X) / 4 mittey = (punkt1.Y + punkt2.Y + punkt3.Y + punkt4.Y) / 4 If gmax = 0 Then g.DrawString(gtext, schrift, Brushes.Black, mittex, mittey) Else g.DrawString(gtext, schrift, Brushes.Black, mittex, mittey, stringFormat) End If gt(0, 0 + ema(k, 1 + (k2 - 1) * 4)) = gt(0, 0 + ema(k, 1 + (k2 - 1) * 4)) + geo(ema(k, 2 + (k2 - 1) * 4), 0 + ema(k, 3 + (k2 - 1) * 4)) ' % gt ein Exemplar weiter Next gt(0, 1 - ema(k, 1 + (k2 - 1) * 4)) = gt(0, 1 - ema(k, 1 + (k2 - 1) * 4)) + geo(ema(k, 2 + (k2 - 1) * 4), 5 - ema(k, 3 + (k2 - 1) * 4)) '% gt eine Reihe weiter rücken gt(0, 0 + ema(k, 1 + (k2 - 1) * 4)) = gt(0, 0 + ema(k, 1 + (k2 - 1) * 4)) - (k3 - 1) * geo(ema(k, 2 + (k2 - 1) * 4), 0 + ema(k, 3 + (k2 - 1) * 4)) ' % Exemplarrückung rückgängig Next bmp.Save(Server.MapPath("/images/" & auftragsnr.Text & ".jpg"), ImageFormat.Jpeg) imgAusgabe.ImageUrl = "/images/" & auftragsnr.Text & ".jpg" imgAusgabe.Visible = True btnPDF.Enabled = True Dim heightwindow As String = CStr(height + 50) Dim widhtwindow As String = CStr(width + 50) ScriptManager.RegisterClientScriptBlock(btnBerechnen, Me.GetType(), "Bildopen", "window.open('/images/" & auftragsnr.Text & ".jpg','Ausgabe AuftragNr.: " & auftragsnr.Text & "','height=" + heightwindow + ",width=" + widhtwindow + ",left=20,top=20');", True) End Sub
- Bearbeitet Robert BreitenhoferModerator Mittwoch, 9. März 2011 09:32 Formatierung
-
Hi,
was mir grundsätzlich schon mal auffällt, ist, dass nirgends auch nur irgendwas wieder freigegeben wird.
Gerade bei Bitmaps, Graphics, ... ist es (wie auch bei Streams) enorm wichtig, dass die Objekte wieder geschlossen/terminiert/... werden. Als Grundsatz kannst Du dir merken: Wenn eine solche Klasse eine Dispose Methode hat, ruf sie auch auf, wenn das Objekt nicht mehr benötigt wird. Bei Close dasselbe (vor Dispose).
Den Rest muss ich mir noch genauer anschauen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hi,
Erstmal danke für den Tipp wurde umgesetzt.
Leider ist mein Problem immer noch nicht behoben. Ich vermute inzwischen das er Probleme hat das Bild abzuspeichern. Hab dazu probiert das Bild im Root Verzeichnis abzuspeichern etc. . Hat leider alles kein Erfolg gebracht.
Ich verstehe auch überhaupt nicht warum er in der Fehlermeldung meine lokalen Pfade ausgibt und nicht die vom Server.
Was ist da los????
Die Seite ist http://www.aspspider.com gehostet vielleicht liegt es auch daran ?!??!
Danke für die hoffentlich helfende Antwort! :)
- Bearbeitet Robert BreitenhoferModerator Mittwoch, 9. März 2011 09:18 Hyperlink als Hyperlink
-
Hi,
Leider ist mein Problem immer noch nicht behoben. Ich vermute inzwischen das er Probleme hat das Bild abzuspeichern. Hab dazu probiert das Bild im Root Verzeichnis abzuspeichern etc. . Hat leider alles kein Erfolg gebracht.
Ich verstehe auch überhaupt nicht warum er in der Fehlermeldung meine lokalen Pfade ausgibt und nicht die vom Server.
die lokalen Pfade sind im StackTrace erstmal egal. Wichtiger wäre, dass das Serververzeichnis "images" Ändern-Rechte für den Account hat, der den Application Pool ausführt (meist bspw. Netzwerkdienst, bei einem Provider aber ggfs. ein eigener Account)
Hast Du ein bestimmtes Verzeichnis, dass definitiv Schreib- bzw. Ändern-Rechte für den Account hat?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hi,
Das kann ich leider nicht sagen. Hab auch schon ausprobiert die Bilder im Root Verzeichnis abzulegen ebenfalls kein Erfolg.
Wie kann ich den rausfinden (Script o.ä.??) ob ich Ändern Rechte habe? Ich kann bei dem Provider so gut wie gar nichts einstellen.
Danke
-
Hi,
Das kann ich leider nicht sagen. Hab auch schon ausprobiert die Bilder im Root Verzeichnis abzulegen ebenfalls kein Erfolg.
Wie kann ich den rausfinden (Script o.ä.??) ob ich Ändern Rechte habe? Ich kann bei dem Provider so gut wie gar nichts einstellen.
Einfach probieren, bspw. per System.IO.File.WriteAllText( "X:\Ordner\Datei.txt", "Abc" ) eine Textdatei zu schreiben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert megahairpin Samstag, 12. März 2011 17:48