我有一个用C#编写的浏览器帮助对象,当用户点击Windows窗体上的一个按钮时,会向我的服务器发出一个HTTPWebRequest POST,并且在正常情况下,这很有效。然而,每隔一段时间,我就会得到一个似乎疯狂的BHO,并不断向我发送大量的HTTPWebRequests(大约每分钟50到100个)。唯一的办法,我已经能够阻止行为,让客户端重新启动他们的电脑,通常用户甚至已关闭IE浏览器,但邮政继续滚动英寸失控HTTPWebRequest
有没有人见过类似的行为,当使用HTTPWebRequest?它几乎看起来像连接中的一些重试逻辑变得疯狂,但我不认为HTTPWebRequest内置任何重试机制,所以这似乎不太可能。
我正在建立我的连接不正确,是否有防止类似这样的好策略?
下面是我设置我的连接:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(myUrl);
webRequest.Timeout = 30000;
webRequest.Method = "POST";
webRequest.KeepAlive = false;
System.Net.ServicePointManager.Expect100Continue = false;
webRequest.ContentType = "text/xml";
webRequest.ContentLength = myData.Length;
using (StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream()))
{
requestWriter.Write(this.myData);
requestWriter.Close();
}
那么,按钮实际上是在BHO中还是BHO连接到其他东西?是否有可能,无论是看这个点击发生是卡在一个循环或有一个几乎不应该失败,但显然是? – 2010-01-15 18:22:26
对不起,“竞赛条件” – 2010-01-15 18:33:09
该按钮是在我的BHO,它基本上像一个常规的Windows窗体应用程序设置。我点击按钮,它触发按钮的事件处理程序,然后发出Web请求。 – Millhouse 2010-01-15 18:55:38