HttpWebRequest: невозможно подключиться к удаленному серверу - PullRequest
2 голосов
/ 03 марта 2012

Я разрабатываю клиентское приложение, которое подключается к серверу и получает от него различную информацию. Это многопоточное приложение. Когда я запускаю его с несколькими нитями, он работает отлично. Пока не начнется выдача исключения со следующим сообщением:

«Невозможно подключиться к удаленному серверу»

Я использовал TCPView и не могу найти ничего о моем клиентском приложении. Поэтому, когда он начинает возвращать «Невозможно подключиться», он даже не ОТКРЫВАЕТ никаких http-соединений ...

Как я могу понять, почему не открывается соединение?

Спасибо

EDIT:

Вот код, который я использую в нескольких потоках для просмотра содержимого страницы:

    HttpWebResponse response = null;
        Stream resStream = null;
        StreamReader reader = null;
        string res = "";            
        try
        {
            HttpWebRequest request = (HttpWebRequest)
                WebRequest.Create(requestUrl);
            if (cookies_ == null)
            {
                cookies_ = new CookieContainer();
            }
            request.Timeout = timeoutVal_;
            request.ReadWriteTimeout = timeoutVal_ * 2;
            request.KeepAlive = false;

            if (bUseCookies)
            {
                request.CookieContainer = cookies_;
            }

            // execute the request
            response = (HttpWebResponse)
                request.GetResponse();

            resStream = response.GetResponseStream();
            reader = new StreamReader(resStream);
            res = reader.ReadToEnd();
        }
        catch (Exception ex)
        {
            throw new Exception(siteToken + " " + ex.Message);
        }
        finally
        {
            if (response != null)
                response.Close();

            if (resStream != null)
                resStream.Close();

            if (reader != null)
            {
                reader.Close();
            }
        }

        return res;

Через пару минут потоки зацикливаются на исключении тайм-аута или невозможности подключения к серверу.

Странная вещь, что если я запускаю Fiddler, соединения возобновляются, и потоки продолжают работать в течение некоторого времени. Как Fiddler решает эту проблему?

1 Ответ

0 голосов
/ 23 ноября 2015

Возможно, вы подключаетесь к Интернету через прокси-сервер, проверьте настройки локальной сети IE. из c # нужно добавить настройки прокси.

    var request = (HttpWebRequest)WebRequest.CreateHttp(url);
                    WebProxy proxy = new WebProxy("http://127.0.0.1:8888", true);
                    proxy.Credentials = new NetworkCredential("user", "pwd", "ADomain");
                    request.Proxy = proxy;
                    request.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;

                    request.Timeout = 1000 * 60 * 5;
                    request.Method = method;
                    request.Headers.Add("DAUTH", dauth);request.GetResponse();
...