Почему я получаю исключение UnauthorizedAccessException при загрузке данных? - PullRequest
0 голосов
/ 10 октября 2011

Я написал этот код для загрузки файла с 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 ]

5 голосов
/ 10 октября 2011

Вам необходимо указать полный путь к файлу при вызове File.Create. Прямо сейчас вы пытаетесь перезаписать каталог «Игры» загружаемым файлом, и это бесполезно.

Попробуйте установить для downloadTo что-то вроде C:\Users\agam\Desktop\Games\myfile.ext вместо того, как это, вероятно, сейчас установлено, C:\Users\agam\Desktop\Games\.


Кроме того, есть два очевидных улучшения вашего кода, на которые я бы посоветовал вам взглянуть:

Например:

using (WebClient request = new WebClient())
{
    request.Credentials = new NetworkCredential(txtFTPuser.Text,
                                                txtFTPpassword.Text);
    request.DownloadFile(fullDownloadPath, downloadTo);
    MessageBox.Show("Completed!");
}
1 голос
/ 10 октября 2011

Каково значение «downloadTo» при вызове файла create? Если «загрузить в» - это каталог с играми, а не полный путь к целевому файлу, вы, вероятно, получите это сообщение об ошибке, поскольку пытаетесь перезаписать (возможно, открытый) каталог файлом.

0 голосов
/ 10 октября 2011

вам нужно будет сделать две вещи: если вы запускаете его из Visual Studio, попробуйте открыть Visual Studio от имени администратора или добавить текущего пользователя с повышенными правами.

...