2009-06-25 23 views
11
[ExternalException (0x80004005): A generic error occurred in GDI+.] 
    IpitchitImageHandler.Data.ImageRepository.AddNewTempImage(Stream image, String extension, Guid PageId, Guid ImageId, ImageTransformCollection toDoTransforms) +1967 
    IpitchitImageHandler.Data.ImageRepository.AddNewTempImage(Stream image, String extension, Guid PageId, Guid ImageId) +85 
    IpitchitWeb.Sell.Controls.UploadImagesSubstep.UploadImages(Object sender, EventArgs e) in F:\Documents and Settings\Vjeran\My Documents\Visual Studio 2008\Projects\Ipitchit\IpitchitWeb\Sell\Controls\UploadImagesSubstep.ascx.cs:88 
    System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +111 
    System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +79 
    System.Web.UI.WebControls.LinkButton.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) +175 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565 

私のコードがあるGDIで発生しました。 ..一般的なエラーは+

+0

例外が発生する行を指定できますか? –

答えて

0

私のホストされているWebサイトで同様の問題(同じ例外)がありました。アクセス許可の問題であることが判明しました。ASP.NETアカウントは、使用可能なスコープ外のディレクトリからイメージファイルを読み込もうとしていました。

web.configの<trust>要素と同様に、アクセス許可を再確認することをお勧めします。ファイルの保存場所によって、 "Medium"以上に設定する必要があります。

0

この人は長い間私を追ってきました。はい、権限を確認することができますが、あなたも行う必要がありますあなたのビットマップを正しく処分することです。

bitmap.Dispose(); 
25

私はこのエラーを情熱で嫌う。 Generic Errorはこれまでに書かれた最も無駄なエラー記述である可能性があります。

問題が発生したときは、常にファイルIOに関連する問題がありました。

ここに私のメモに残っている修正のリストがあります。これらの修正が適用されるかどうかはわかりませんが、通常は私のためのトリックです。

  • チェックファイルのパス
    • 親ディレクトリが
    • そのパスを確認しますが、パス
  • を作成するために、ファイル名と拡張子
  • 利用Server.MapPathの()の両方を含んで存在していることを確認してください
  • ファイルがソースに書き戻されていないことを確認してください。必要に応じてストリームを閉じてから再度開きます。

このリストを他の場所から盗まれた場合は謝罪します。しばらく私の手帳にありました。どこから来たのか覚えていません。

+0

それは本当に行方不明でした。 – sabbour

+1

もう一度やり直してください。パスはありません。ありがとう! – ppumkin

+1

+1熱心に憎むために!私はまた欠けているパスのためにこのエラーを持っていました。 – Curt

0

私はアクセス許可がここに問題であることに同意します。

ネットワークサービスですか?

0

私は今、同じエラーが発生しており、Googleは答えを見つけるのを手助けしています: ビットマップを読み込んだ/保存すると、ロックされたファイルが生成されます。

回避策は、オットビットマップを作成して保存し、それを解放してみましょうです:

ビットマップTMP =新しいビットマップ(bitmapToBeSaved)。 tmp.SaveToFile(fileName);

0

ローカルマシンのVistaまたはWindows 7とサーバーのWindows Server 2003はどちらですか?私はGDI +の実装が異なっていると信じています。新しいOSでこのエラーは表示されません。私は今、この問題に取り掛かりつつあります。それは私が出会った事実の一つです。

0

ていることを確認しIIS_WPGは、あなたのアップロードフォルダに正しい権限を持っており、またASPNET

私はちょうど同じ問題を抱えていて、これを修正しました。

も必要であれば、あなたのサブフォルダをアクセス権を伝播することを忘れないでください(私はそれを忘れているかもしれ.. :))

0

System.Drawing.Image img = Base64ToImage(_ImagePath); 
    img.Save(_attachmentPath, ImageFormat.Jpeg); 

使用Server.MapPathのダイレクトパスを使用しないでくださいそして

System.Drawing.Image img = Base64ToImage(_ImagePath); 
    img.Save(Server.MapPath(_attachmentPath), ImageFormat.Jpeg); 
0

を必要とした場合、それはあなたがイメージに使用されているパスについて確認してくださいディレクトリを作成します、私はまた、あなたが使用しているのと同じerror.Checkすべてのパスに直面しています。

1

ここで(このサイトで)誰もが、アクセス許可エラーのためにこれについて説明しました。私は別の味、メモリを見つけた。私は記憶がなくなり、このエラーも受信し始めました。だから、別の潜在的なエラーの原因としてそれを念頭に置いてください。

私の場合、私は.NETアプリケーションで実行していて、いくつかのスレッドに対して実行していました(GDI +プロセス全体のロックによってあまりにも多くのスレッドを保持していないほど)。メジャータスクが完了した後に "GC.Collect()"を追加しても、速度にはほとんど影響を与えていないようですが、メモリ不足エラーを完全に取り除きました。

関連する問題