Подтвердить что ты не робот

WebClient генерирует (401) Несанкционированная ошибка

У меня есть следующий код, запущенный в службе Windows:

WebClient webClient = new WebClient();
webClient.Credentials = new NetworkCredential("me", "12345", "evilcorp.com");
webClient.DownloadFile(downloadUrl, filePath);

Каждый раз я получаю следующее исключение

{"The remote server returned an error: (401) Unauthorized."}

Со следующим внутренним исключением:

{"The function requested is not supported"}

Я точно знаю, что учетные данные действительны, на самом деле, если я перейду в downloadUrl в своем веб-браузере и поставлю свои учетные данные как evilcorp.com\me с паролем 12345, он загрузится нормально.

Что странно, так это то, что если я укажу свои учетные данные как [email protected] с 12345, он, похоже, терпит неудачу.

Есть ли способ форматировать учетные данные?

4b9b3361

Ответ 1

По-видимому, ОС, на которой вы работаете, по умолчанию, поскольку шифрование по умолчанию изменилось между ОС. Этот блог содержит более подробную информацию: http://ferozedaud.blogspot.com/2009/10/ntlm-auth-fails-with.html

Это, по-видимому, также обсуждалось здесь в stackoverflow: 407 Требуется аутентификация - не отправлено вызов

Я бы посоветовал сначала прочитать блог, поскольку там есть дистиллированное знание.

Ответ 2

webClient.UseDefaultCredentials = true; разрешил мою проблему.

Ответ 4

При написании URL, поставьте '@' перед строкой url.

Например:

var url = @"http://evilcorp.com";
WebClient webClient = new WebClient();
webClient.Proxy = null;
webClient.DownloadFile(new Uri(url), filePath);

Это решит вашу проблему.

Ответ, данный P.Brian.Mackey, также верен.