WebClient以静默方式失败(不会抛出异常):
using (WebClient webClient = new WebClient())
{
webClient.DownloadFile(url, outputPath);
}
if (!File.Exists(outputPath)) logger.Warn("Could not download file.");
代码在LOCAL SERVICE下运行的Windows服务中以每分钟一次的循环运行,尝试写入已删除权限的文件夹。当我恢复目标文件夹的适当权限时,下载开始成功。
这是一种已知行为吗?这是一个错误吗?是否正确检查输出文件是否存在以确定DownloadFile是否成功?
答案 0 :(得分:0)
这是一种已知行为吗?
没有。根据{{3}}:
在中间层应用程序中使用此方法时,例如 在ASP.NET页面中,如果帐户在哪个下,您将收到错误 应用程序执行没有访问该文件的权限。
基本上,如果您运行此代码的帐户没有对目标文件夹的写入权限,您将获得异常。
这是一个错误吗?
我不这么认为。
正在检查输出文件是否存在正确的方法 确定DownloadFile是否成功?
不,因为如果您没有给定文件夹的权限,documentation将返回false,因为文档明确指出:
如果调用者没有足够的权限来阅读 指定的文件,不抛出异常,方法返回false 不管路径的存在。
所以你可能搞砸了一些权限。例如,如果您对该文件夹具有写入权限但没有读取权限,则DownloadFile
将成功,但File.Exists将返回false。