我开发了客户端应用程序,该应用程序连接到服务器并从中获取不同的信息。这是多线程的应用程序。当我以几个线程启动它时,它可以完美工作。
直到它开始引发带有以下消息的异常:

“无法连接到远程服务器”

我使用过TCPView,无法找到有关我的客户端应用程序的任何信息。因此,当它开始返回“无法连接”时,它甚至都不会打开任何http连接...

我如何弄清楚为什么它无法打开连接?

谢谢,

编辑:

这是我在多个线程中用来影响页面内容的代码:

    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如何解决该问题?

最佳答案

您可能正在通过代理连接Internet,请检查您的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();

10-07 19:53
查看更多