ユーザーが Windows フォームのボタンをクリックすると、HTTPWebRequest POST をサーバーに送信する C# で記述された Browser Helper Object があります。通常、これはうまく機能します。しかし、ときどき、気が狂ったように見える BHO を受け取り、膨大な数の HTTPWebRequests (毎分約 50 から 100) を継続的に送信します。クライアントに PC を再起動させる動作を止めることができた唯一の方法は、多くの場合、ユーザーが IE を閉じていても、POST は引き続き発生します。
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();
}