ファイルがあります
とある案件でMicrosoft Reportを利用した印刷を行っていたんですが、お客様から突然印刷ができなくなったと連絡を受けまして。
調査のためにスタックトレースを出力したところ、エラーメッセージとして
IOException ファイルがあります
と出力されていました。
実際にエラーを吐いているコードを確認して見たところ、GetTempFileNameを利用して印刷用リソースを一時ファイルに出力するところで例外が発生してます。
どうやら下記のブログに書いてある内容のようです。
確かに環境変数で定義されている一時フォルダをみると、tmp****.tmp(****は16進数)というファイルが65535個存在していました。
Path.GetTempFileName Method (System.IO) | Microsoft Docs
もう数年問題なく動いていたプログラムなのになぜ・・・と思ったのですが、納得。
私が作った場所じゃなかったので余計ぴんと来てませんでした。
一時ファイル作っておいて消さない実装をしてたのが悪い。GetTempFileNameに罪はない。
先ほどのブログ先では「GetRandomFileName」を利用するようにされていましたが、今回は単に一時ファイルを削除する方法で対応することに。
動いているからって問題ないと思うと後で痛い目に合う典型ですね。。。