我有以下代码:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Proxy.Credentials = CredentialCache.DefaultCredentials;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (Stream dataStream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(dataStream))
{
string responseFromServer = reader.ReadToEnd();
System.Diagnostics.Debug.WriteLine(responseFromServer);
System.Diagnostics.Debug.WriteLine(response.StatusDescription);
}
我的猜测是,Fiddler导致这个工作,因为它会用自己覆盖代理;但是,我的印象是运行上面的代码与将URI粘贴到浏览器中的行为相同。
我还猜测超时实际上是用词不当,而且它根本就没有与服务器协商(尽管我无法验证该理论)。
鉴于使用Fiddler更改了请求的行为,我该如何调试此问题?
编辑:
根据@Alex Seleznyov的建议,我尝试运行Microsoft Message Analyzer。看起来很像问题是,在Web应用程序下运行时,代码不是首先联系我们的内部代理,而是通过控制台应用程序。