下载数据时为什么会出现UnauthorizedAccessException?

时间:2011-10-10 15:50:32

标签: c# webclient filestream file-permissions

我写了这段代码来从FTP服务器下载文件。当程序尝试下载并保存文件时,我收到拒绝访问错误。我尝试使用管理员权限打开程序,但它给出了同样的错误。

WebClient request = new WebClient();
request.Credentials = new NetworkCredential(txtFTPuser.Text,
                                            txtFTPpassword.Text);
/*List all directory files*/
byte[] fileData = request.DownloadData(fullDownloaPath);//dnoces.dreamhost.com
FileStream fi = File.Create(downloadTo);
fi.Write(fileData, 0, fileData.Length);
fi.Close();
MessageBox.Show("Completed!");

enter image description here

3 个答案:

答案 0 :(得分:5)

您需要在致电File.Create时提供完整的文件路径。现在,你正试图用你正在下载的文件覆盖你的“游戏”目录,这是不行的。

尝试将downloadTo设置为类似C:\Users\agam\Desktop\Games\myfile.ext的内容,而不是将其设置为C:\Users\agam\Desktop\Games\


顺便说一下,我鼓励您查看代码有两个明显的改进:

  • 使用WebClient的{​​{3}}方法,而不是DownloadData,为您节省一些精力。
  • DownloadFile调用中包装WebClient的创建,以确保即使您的方法遇到异常也将其关闭。否则,using

例如:

using (WebClient request = new WebClient())
{
    request.Credentials = new NetworkCredential(txtFTPuser.Text,
                                                txtFTPpassword.Text);
    request.DownloadFile(fullDownloadPath, downloadTo);
    MessageBox.Show("Completed!");
}

答案 1 :(得分:1)

调用文件创建时“downloadTo”的值是多少?如果“下载到”是游戏目录而不是该目标文件的完整路径,那么您可能会收到该错误消息,因为您试图用文件覆盖(可能是打开的)目录。

答案 2 :(得分:0)

如果您是从visual studio运行它,请尝试以管理员身份打开visual studio,或者使用提升的权限添加当前用户,您需要做两件事。