ちんまい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を見てみると↓の事がかいてあった。

img01

・・・・・・ん!?

ASP.NET サービス内での使用はサポートされません。

使うなって事なのねん。何かが競合することでもあるんだろうかと愚考。

つか、.net4.0までは上の注意書きがないとゆー罠。4.5からサポートしなくなった模様。

なんか別のライブラリ的なサムシングエルスを使うしかあるまい。。。

2017/4/12追記 続き

MSDN