C# 用の DevDefined OAuth ライブラリを使用してサード パーティ API に接続する際に問題が発生しています。
https://github.com/bittercoder/DevDefined.OAuth
接続は 1 年以上正常に機能していますが、ここ 2 日間で数時間ごとに失敗し始めました。例外メッセージは次のとおりです。
The request was aborted: Could not create SSL/TLS secure channel
アプリプールが再起動された後は正常に機能しますが、数時間後に認証が停止します.
同様の質問は、キープアライブがこれを解決する可能性があることを示唆していますが、私には役に立ちませんでした: ASP.NET - 要求が中止されました: SSL/TLS セキュア チャネルを作成できませんでした
ただし、コードは非常に複雑で、HttpWebRequest オブジェクトは作成後に他の多くの関数に渡されます。閉める場所がわかりません。また、HttpWebRequest を閉じる方法がわからないので、私の質問は次のとおりです。
- この HttpWebRequest を閉じる場所を見つけるにはどうすればよいですか?
- HttpWebRequest をどのように閉じますか? それとも、破棄する必要があるのは Response ですか?
DevDefined コードは次のようになります。
public virtual HttpWebRequest ToWebRequest()
{
var request = (HttpWebRequest) WebRequest.Create(description.Url);
// .. snip setting request properties
return request;
}
関数ToWebRequest()
はいくつかの場所で呼び出され、それらの場所から Response が抽出され、さらに多くのメソッドに返されます。したがって、それを追跡するのは難しいことが証明されています。Response が使用されているが破棄されていないことを示しているように見えるこのメソッドを見つけました。
public override string ToString()
{
if (string.IsNullOrEmpty(ResponseBody))
{
ResponseBody = ToWebResponse().ReadToEnd();
}
return ResponseBody;
}