使用 HttpWebRequest,我正在尝试以循环模式(两个 IIS 7.5 服务器)查询负载平衡设置背后的安全(协商)url。看起来很简单,但我有一些问题。
第一个匿名请求在一个服务器上进行,协商部分在另一个服务器上进行。问题是这两个请求之间大约需要六秒钟,所以时间太长了。在尝试诊断延迟时,我意识到,通过 Fiddler 的代理,所有请求都在同一台服务器上进行,因此总共花费了不到一秒的时间。如果我禁用 Fiddler 选项“重用服务器连接”,那么我的请求与没有 Fiddler 的行为相同,并且需要很长时间。
谷歌搜索,我最终找到了这个链接:http://fiddler2.com/blog/blog/2013/02/28/help !-running-fiddler-fixes-my-app-
我知道 Fiddler 正在使用套接字和它自己的连接池,但是有没有办法使用 .NET HttpWebRequest 重现相同的行为,以便我的请求(匿名和协商)将重用连接并最终在同一台服务器上?
这是一个快速测试,在没有 Fiddler 的情况下大约需要 70 秒才能完成,而通过 Fiddler 大约需要 2 秒......
另外,请注意这不是代理检测延迟,并且在 nlb 上禁用了粘性会话。
public void Main(string[] args)
{
int i = 0;
while (i < 10)
{
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://nlb/service.asmx");
HttpWebResponse response;
wr.KeepAlive = true;
wr.UseDefaultCredentials = true;
response = (HttpWebResponse)wr.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
Console.WriteLine(sr.ReadToEnd());
}
response.Close();
i++;
}
}
这是另一个证明 Fiddler 非常棒的证据!
感谢您的任何建议。