Обновление:
Если вы только что подошли к этому вопросу, суть в том, что я пытаюсь сделать HttpWebRequest через прокси, и я получаю 407 от нашего странного прокси-сервер. IE, Firefox, Chrome успешно согласовывают прокси-сервер, как и приложения Adobe Air. Может быть важно, что веб-установщик Google Chrome действительно не работает, и нам приходится использовать автономный установщик.
Благодаря ссылке Яна я перешел на следующий этап. Теперь он отправляет токен обратно на прокси-сервер, однако 3-й этап не проходит, поэтому запрос с хешем имени пользователя/пароля не отправляется .NET и, следовательно, не возвращается HTML.
Я использую:
- пользовательский агент IE6
- Windows 7
- Прокси-сервер Scansafe
- .NET 3.5
Вот последний код, который соответствует приведенным ниже журналам:
HttpWebRequest request = HttpWebRequest.Create("http://www.yahoo.com") as HttpWebRequest;
IWebProxy proxy = request.Proxy;
// Print the Proxy Url to the console.
if (proxy != null)
{
// Use the default credentials of the logged on user.
proxy.Credentials = CredentialCache.DefaultCredentials;
}
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
request.Accept = "*/*";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream stream = response.GetResponseStream();
Исключение
WebException (407) Требуется аутентификация.
Используемый прокси
Прокси-клиент — это аппаратное устройство Scansafe в нашей серверной комнате, которое (после аутентификации с помощью NTLM) затем направляет ваш HTTP-трафик на свои серверы для фильтрации трафика.
Выходные данные трассировки System.Net
IE успешно согласовывает прокси
Решение
На самом деле я не нашел решения, но благодаря Feroze и Eric я нашел обходной путь и обнаружил, что основной проблемой является фактический прокси (а не его конфигурация). Это может быть неясная проблема с 3 переменными: реализация .NET HttpWebRequest, Windows 7 и, конечно же, аппаратный клиент Scansafe, который находится в нашей стойке; но без запроса поддержки MSDN я не узнаю.