HttpWebResponse - правильное размещение соединения - PullRequest
5 голосов
/ 25 апреля 2011

Я работаю над менеджером загрузок в C # и использую несколько http-запросов, и мне было интересно, как можно убедиться, что соединение правильно закрыто?

Достаточно ли вызвать Dispose в ответном потоке? Мне также нужно позвонить в Close? Не знаю, где что-то могло пойти не так, но в какой-то момент веб-сайт перестал отвечать.

Спасибо!

Ответы [ 2 ]

9 голосов
/ 25 апреля 2011

Оберните ваш HttpWebResponse в блок использования:

using(HttpWebResponse response = request.GetResponse())
{
    // do stuff here
} // response object is automatically disposed of here. 
0 голосов
/ 07 июля 2015

Как упоминал Кайл, оберните ваш HttpWebResponse в блок использования.Но если GetResponse () генерирует исключение (например, в ответе 404), вам нужно получить HttpWebResponse в исключении.

HttpWebResponse webResponse = null;
try {
    webResponse = (HttpWebResponse)webRequest.GetResponse();
} catch (WebException e) {
    webResponse = (HttpWebResponse)e.Response;
    if (webResponse == null) {
        // Handle this.
    }
}    
using (webResponse) {
    // Process the response.
}
...