C#关闭HttpWebRequest DevDefined

时间:2011-08-09 08:54:22

标签: c# oauth httpwebrequest httpwebresponse devdefined-oauth

使用针对C#的DevDefined OAuth库连接到第三方API时遇到问题:

https://github.com/bittercoder/DevDefined.OAuth

连接已经运行了一年多了,但在最近两天它已经开始每隔几个小时失败一次。异常消息是:

The request was aborted: Could not create SSL/TLS secure channel

在应用程序池重新启动后它正常工作,但几小时后停止验证 - 这让我觉得它没有关闭HttpWebRequest,我们正在泄漏连接并最终耗尽。

类似的问题表明KeepAlive可以解决这个问题,但它对我没有帮助:ASP.NET - The request was aborted: Could not create SSL/TLS secure channel

但代码非常复杂,HttpWebRequest对象在创建后传递给许多其他函数。我看不出它在哪里关闭它。而且,我不知道如何关闭HttpWebRequest,所以我的问题是:

  • 如何找到关闭此HttpWebRequest的位置?
  • 如何关闭HttpWebRequest?或者是必须处理的响应?

DevDefined代码如下所示:

public virtual HttpWebRequest ToWebRequest()
{
    var request = (HttpWebRequest) WebRequest.Create(description.Url);
    // .. snip setting request properties
    return request;
}

在几个地方调用函数ToWebRequest(),从那些地方提取响应并返回更多方法。因此证明难以追踪它。我确实发现这个方法似乎表明正在使用Response而不是处置:

public override string ToString()
{
    if (string.IsNullOrEmpty(ResponseBody))
    {
    ResponseBody = ToWebResponse().ReadToEnd();
    }
    return ResponseBody;
}

0 个答案:

没有答案