5

特にコードを提供していないため、これが漠然とした質問であることはわかっていますが、.Net 2.0 アプリケーションを開発しており、内部で構築された API にデータを送信する WebRequest があります。

奇妙なことは、リクエストの GetRequestStream() メソッドで失敗する 3 番目 (常に 3 番目) の後続のリクエストで発生します。1 回目と 2 回目の呼び出しはすべて問題ありません。3 回目には、少しハングアップし、最終的にタイムアウトします。

API は社内の他のアプリケーションによって呼び出されているため、サーバー側の問題やネットワークの問題ではないことがわかっています。いくつかのマシンで試しましたが、すべて同じ問題を抱えています。以前にこの問題が発生したことはありますか、またはデバッグ方法についての提案はありますか (応答オブジェクトは何も生成しないか、少なくとも何も役に立たないため)。

4

2 に答える 2

18

これは通常、WebResponse を破棄していない場合に発生します。クライアントから同じマシンへの接続数には制限があり、既定では 2 つです。WebResponse を閉じると、接続を再利用 (または閉じる) できます。using ステートメントは、ここであなたの友達です:

WebRequest request = [...];
// Do stuff with the request stream here (and dispose it)
using (WebResponse response = request.GetResponse())
{
    // Stuff with the response
}
于 2009-01-20T11:00:29.863 に答える
1

うん、あなたの正確に正しい。応答が適切に処理されていませんでした。私たちはこれをガベージコレクターに任せていましたが、ご想像のとおり、時間内に収集されていませんでした。残念ながら、私はブラウザを閉じて、答えを読むのを忘れました(笑、あなたは私がどれほど愚かだと思いますか)、そして問題は解決されました。

今夜は2つのことを学びました。1、WebRequestを適切に破棄します。および2、スタックオーバーフローの回答にもっと注意を払ってください!

于 2009-01-20T11:46:11.953 に答える