ちんまいWebアプリの中で、Drawingを使って画像を作ってる場所があるんだけど、最近そこの部分ではまった。
画像を保存するところで、唐突に「GDI+ で汎用エラーが発生しました。」で落ちることがある。発生するとIISResetするまで発生し続ける。ソース的には↓の感じ。
Bitmap img = new Bitmap(100, 64); Color c = Color.FromArgb(0xFF, Color.FromArgb(Convert.ToInt32("0xD9333F", 16))); Graphics g = Graphics.FromImage(img); Pen pen = new Pen(c); g.DrawLine(pen, 0, 0, 100, 0); img.Save(".\HOGE\FUGA.png", ImageFormat.Png);//ここでエラー。
検索してみると、「ファイルパスがおかしいと落ちる」・「パスが長すぎると落ちる」・「ファイルから読み込んでそのまま保存とかしようとすると落ちる」・「フォルダの権限が足りないと落ちる」などなどいくつか出てくる。
ただ、↑くらいの話は結構誰でも知ってるポイントなので、何度も確認している。でも落ちる。
基本に立ち返り、MSDNを見てみると↓の事がかいてあった。
・・・・・・ん!?
ASP.NET サービス内での使用はサポートされません。
使うなって事なのねん。何かが競合することでもあるんだろうかと愚考。
つか、.net4.0までは上の注意書きがないとゆー罠。4.5からサポートしなくなった模様。
なんか別のライブラリ的なサムシングエルスを使うしかあるまい。。。
2017/4/12追記 続き