我开发了连接到服务器并从中获取不同信息的客户端应用程序。它是多线程应用程序。当我用几个线程启动它时,它工作得很好。 直到它开始抛出异常并显示以下消息:
“无法连接到远程服务器”
我使用了 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 如何解决这个问题?
请您参考如下方法:
您可能正在通过代理连接互联网,请检查您的 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();
