Этот код изменился, взломал, попробовал и попробовал, в настоящее время у меня есть свой веб-запрос, как показано, а затем раздел GetRequestStream() и GetResponse(). Это работает из-за нашего прокси-сервера, но из ноутбука на Wi-Fi не за прокси-сервером бит GetProxy возвращает ури, который был передан ему, это приводит к ошибке "ServicePointManager не поддерживает прокси-серверы https-схемы". Поэтому я попробовал, как показано ниже, чтобы установить прокси на пустой новый прокси-сервер, когда он соответствует пропущенному uri. Это приводит к тому, что процесс блокируется в течение хорошего времени, а затем возвращается "операция имеет тайм-аут ошибки". Если я поставил Fiddler на ноутбук, он будет действовать как прокси-сервер, поэтому код будет работать так же, как и в нашей сети, и все в порядке, поэтому скрипт меняет работу кода.
Я думаю, что ключ может быть в тайм-ауте проблемы во время GetRequestStream(), что он выбрасывает таймаут.
На ноутбуке нет настроек прокси-сервера, то есть или хром. Через браузер я могу без проблем получить доступ к веб-сайтам http и https (включая тот, который я получаю от этого кода).
Однако из моего кода С# я не могу заставить запрос https работать.
Если я изменю запросы на http, он работает нормально. (как в нашей сети за прокси, так и от ноутбука)
Пока ниже показан текущий код, который у меня есть, я попытался заменить все блоки кода, которые я нашел здесь, и различные блоги/руководства, не найдя рабочего решения.
Чтобы быть ясным, я получаю рабочее соединение на машинах за прокси-сервером как на https, так и на http. Я могу заставить его работать с не-прокси-ноутбуком при использовании http. ошибки возникают на ноутбуке без прокси-сервера при попытке получить соединение https.
HttpWebRequest myWebRequest;
myWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
myWebRequest.CookieContainer = new System.Net.CookieContainer();
if (myWebRequest.Proxy.GetProxy(new Uri(url)).ToString() == url)
{
myWebRequest.Proxy = new WebProxy();
}
else
{
string proxyuri = myWebRequest.Proxy.GetProxy(new Uri(url)).ToString();
myWebRequest.Proxy = new WebProxy(proxyuri, true);
myWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
}
myWebRequest.UseDefaultCredentials = true;
Хорошо, поэтому проблема, с которой я столкнулась, связана с настройками в apache на сервере. решение находится здесь.
HttpWebRequest.GetRequestStream() прерывает таймаут при подключении SSL под Windows 7/Vista
В основном вам необходимо убедиться, что имя сервера в ваших директивах apache соответствует адресу https вашего С# до www. часть.
Теперь я хотел бы знать, есть ли способ в коде С#, чтобы избежать или уловить это до вызова GetRequestStream(), который замерзает на 30 секунд, за которым следует исключение тайм-аута.
Как я могу это лучше понять?