多数のhttp呼び出しを行うサードパーティのライブラリを使用しています。コードを逆コンパイルすることで、rawを作成して使用していることを確認しHttpWebRequest
、すべて単一のURLにアクセスします。問題は、一部のリクエストが適切に閉じられないことです。しばらくするHttpWebRequest
と、ライブラリがGetRequestStream()*を呼び出すと、すべての新しいブロックが永久にブロックされます。このブロックは、その特定のホストのServicePointのConnectionLimitによるものであると判断しました。デフォルト値は2です。つまり、ライブラリは2つのリクエストを開いてから、3番目のリクエストを開こうとします。これによりブロックされます。
このブロッキングから保護したいと思います。ライブラリはかなり回復力があり、それ自体を再接続するので、既存の接続を切断しても問題ありません。問題は、このライブラリが作成するHttpWebRequest
またはのいずれにもアクセスできないことです。HttpWebResponse
ただし、アクセスするURLはわかっているので、にアクセスできますServicePoint
。
var sp = ServicePointManager.FindServicePoint(new Uri("http://UrlThatIKnowAbout.com"));
(注:KeepAliveはこれらのHttpWebRequestsで有効になっています)