2009-03-02 21 views
1

私は別のサーバー上のWebサービスをポーリングしているWebアプリケーションを持っています。サーバは同じネットワーク上にあり、ポート8080で動作する内部IPによって参照されます。HttpWebRequestが返されず、接続が閉じられる

15秒ごとに、ジョブ情報を含むxml応答を受信する要求が送信されます。 95%の時間、これはうまくいくが、無作為な時間にサーバーへの要求はヌルであり、「リモートホストによって強制的にクローズされた応答」を報告する。

この問題を調査している他の人は、KeepAlive = falseを設定している人もいます。これは問題を解決していません。 Webサーバーは.NET 3.5 SP1を実行しています。応答へ

Uri serverPath = new Uri(_Url); 

// create the request and set the login credentials 
_Req = (HttpWebRequest)WebRequest.Create(serverPath); 
_Req.KeepAlive = false; 
_Req.Credentials = new NetworkCredential(username, password); 
_Req.Method = this._Method; 

コール:

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
_ResponseStream = response.GetResponseStream(); 

このための方法はGETです。私はタイムアウトを変更しようとしましたが、デフォルトはこれを考慮に入れるのに十分です。

私たちが実行するもう1つのリクエストは、サーバーにデータを投稿するためのPOSTであり、私たちはランダムに同じ問題を出しています。これに影響を与えるファイアウォールはありません。ウィルススキャナは除外されています。これを解決するのに役立つアイデアは大いにありがたいです!

+0

切断の頻度はどのくらいですか?サーバーログで興味深いものは何ですか? – jdigital

+0

実際にあなたの接続を閉じるサーバーではないことは確かですか?それは完全にそれがあなたのクライアントではなく、サーバーのバグである可能性があります。 –

答えて

5

応答ストリームを閉じて応答自体を破棄していますか?これがWebRequestの "ハングアップ"の最も頻繁な原因です。同じマシンに同時に開くことができる接続の数には限界があります。 GCは最終的に接続を確定しますが、適切に処理すると問題はありません。

0

問題の原因として、ネットワークの問題を除外しません。サーバーにpingを実行して、失敗した要求と同じ回数のパケットが破棄されたかどうかを確認しましたか?

0

FtpWebRequestオブジェクトのtimeoutプロパティを最大に設定しました。4GBファイルで試してみました。うまくいきました。

関連する問題