プロセスに書き込み権限がないフォルダーにファイルをダウンロードするように求められたときに、WebClientはサイレントに (例外をスローせずに) 失敗します。
using (WebClient webClient = new WebClient())
{
webClient.DownloadFile(url, outputPath);
}
if (!File.Exists(outputPath)) logger.Warn("Could not download file.");
コードは、LOCAL SERVICE で実行されている Windows サービスで 1 分に 1 回のループで実行され、アクセス許可が削除されたフォルダーに書き込もうとしていました。ターゲット フォルダーに適切なアクセス許可を復元した瞬間、ダウンロードは成功し始めました。
これは既知の動作ですか? バグですか?出力ファイルの存在を確認することは、DownloadFile が成功したかどうかを判断する正しい方法ですか?