Отсутствует запись обычной HTTP-аутентификации в заголовке HTTP-запроса - PullRequest
8 голосов
/ 22 июня 2011

У меня есть следующий код:

WebClient client = new WebClient();
String un = "Username";
String pw = "Password";
client.Credentials =  new System.Net.NetworkCredential(un,pw);
client.DownloadFileCompleted +=
            new AsyncCompletedEventHandler(downloadFileCompleted);
client.DownloadFileAsync(new Uri(url), Config.LocalDir + @"\data\supportData.xml");

При использовании NetworkMonitor на сервере я получаю следующее:

Http: Request, GET /audiClave/REST/en/actions 
Command: GET
URI: /audiClave/REST/en/actions
ProtocolVersion: HTTP/1.1
Host:  210.xxx.xxx.xxx:8080
Connection:  Keep-Alive
HeaderEnd: CRLF

Нет записи аутентификации.Чего мне не хватает?

1 Ответ

35 голосов
/ 22 июня 2011

Попробуйте по старинке:

string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(un + ":" + pw));
client.Headers[HttpRequestHeader.Authorization] = "Basic " + credentials;

IIRC WebClient не отправляет заголовок запроса авторизации, пока не получит запрос от сервера с 401.

...