HttpWebRequest:无法连接到远程服务器

本文关键字:服务器 连接 HttpWebRequest | 更新日期: 2023-09-27 18:26:26

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

"无法连接到远程服务器"

我使用过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是如何解决这个问题的?

HttpWebRequest:无法连接到远程服务器

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