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;
}

0 ответов

Другие вопросы по тегам