C# Закрытие HttpWebRequest DevDefined
У меня проблема с подключением к стороннему API с использованием библиотеки DevDefined OAuth для C#:
https://github.com/bittercoder/DevDefined.OAuth
Соединение работает нормально уже более года, но в последние два дня оно перестало работать каждые несколько часов. Сообщение об исключении:
The request was aborted: Could not create SSL/TLS secure channel
Он работает как обычно после перезапуска пула приложений, но затем останавливается после нескольких часов аутентификации - это заставляет меня думать, что это не закрывает HttpWebRequest, и мы пропускаем соединения и в конечном итоге заканчиваем.
Подобный вопрос предполагает, что KeepAlive мог бы решить эту проблему, но это не помогло мне: ASP.NET - запрос был прерван: не удалось создать безопасный канал SSL/TLS
Но код довольно сложный, и объект HttpWebRequest передается во многие другие функции после создания. Я не вижу, где его закрыть. А также, я не знаю, как закрыть HttpWebRequest, поэтому мой вопрос:
- Как я могу найти, где закрыть этот HttpWebRequest?
- Как вы закрываете HttpWebRequest? Или ответ должен быть утилизирован?
Код DevDefined выглядит так:
public virtual HttpWebRequest ToWebRequest()
{
var request = (HttpWebRequest) WebRequest.Create(description.Url);
// .. snip setting request properties
return request;
}
Функция ToWebRequest()
вызывается в нескольких местах, и из этих мест Ответ извлекается и возвращается к еще большему количеству методов. Так что его трудно отследить. Я нашел этот метод, который, кажется, показывает, что Ответ используется, но не утилизируется:
public override string ToString()
{
if (string.IsNullOrEmpty(ResponseBody))
{
ResponseBody = ToWebResponse().ReadToEnd();
}
return ResponseBody;
}