水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > Bitmap クラスでたまに画像が読めなかった話

Bitmap クラスでたまに画像が読めなかった話

2003年10月28日(火曜日)

Bitmap クラスでたまに画像が読めなかった話

更新: 2003年10月28日

System.Drawing.Bitmapで画像が読めない?という話がありましたが、この原因が判明しました。単純に、画像ファイルに ASPNET さん (aspnet_wp account, ASP.NET の実行ユーザ) の読み取り権限がないと発生するのでした。

画像は他のディレクトリで作って持ってくることが多く、そうなると作成場所に設定されていた権限を引き継ぎますので、ASPNET さんには読めないことが多いです。で、ASPNET さんが読めるようになっているディレクトリで上書き保存したりすると、その権限がついて解決するという。

いや、実に単純な話でした。バグを疑ったりしてごめんなさい。

※思いっきり言い訳ですが、権限がなくてファイルが読めなかったときに出る例外というのが System.ArgumentException で、例外メッセージは「使用されたパラメータが無効です。」って、これで分かれというのも無理な話なのではないかと思います。

まあそんなわけなので、画像を読む前に読み込み権限があるかどうかをチェックすれば良いのですが、どうやってチェックするのでしょう。System.Security.Permissions.FileIOPermission ……は何か違うような気も……。

※2003-10-28 追記: 沢渡 真雪さんにご指導を頂きました。File クラスなどでファイルにアクセスすると、UnauthorizedAccessException が発生するのでチェックできるそうです。実際に FileInfo の OpenRead() メソッドで UnauthorizedAccessException が発生するのを確認し、無事実装できました。沢渡さん情報ありがとうございます。

関連する話題: C# / プログラミング

最近の日記

関わった本など