0

ユーザーが 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();
}
4

1 に答える 1

0

これが発生した場合、クライアントに自分の PC から Wireshark トレースを取得させることはできますか?

IE コントロールをホストしている他のオブジェクトが存在する可能性があります。これにより、BHO がホストされ、リクエストのトリガーが開始されますか?

残念ながら、自分のマシンで再現を取得できない限り、それは暗闇でのショットにすぎません。

于 2010-01-15T19:57:24.367 に答える