Задача: При использовании метода WebClient.DownloadFile для скачивания файла получаю ошибку:
System.Net.WebException: The remote server returned an error: (401) Unauthorized.
Инструментарий: Visual Studio 2013
Решение: Для начала приведу код который используется:
using System.Net;
using System.Web;
...
using (WebClient client = new WebClient())
{
client.DownloadFile(url, fileName);
}
В строке вызова метода client.DownloadFile у нас возникает ошибка. Для того чтобы ее исправить нужно воспользоваться параметром UseDefaultCredentials. Которые указывает на то что мы должны проходить проверку подлинности, используя по умолчанию учетные данные текущего пользователя. После изменений код будет выглядеть следующим образом:
using System.Net;
using System.Web;
...
using (WebClient client = new WebClient())
{
client.UseDefaultCredentials = true;
client.DownloadFile(url, fileName);
}
Если Вам нужно использовать логин/пароль, тогда можно воспользоваться кодом:
using System.Net;
using System.Web;
...
using (WebClient client = new WebClient())
{
client.UseDefaultCredentials = true;
client.Credentials = new NetworkCredential("username", "password");
client.DownloadFile(url, fileName);
}
Если вы используете LDAP аутентификацию, тогда можно указать DefaultNetworkCredentials:
...
client.Credentials = CredentialCache.DefaultNetworkCredentials;
...