При выполнении программы автоматического обновления вы хотите избежать проблем и напрямую использовать HttpWebRequest и HttpWebResponse для загрузки обновленных файлов с сервера. Обратите внимание на поток ответа Close при его использовании:
после использования HttpWebRequest.GetResponse() для получения интерфейса HttpWebResponse вы должны не забыть вызвать HttpWebResponse.close, чтобы закрыть поток.
Если вы используете HttpWebResponse.GetResponseStream() для получения потока ответов, используйте метод Close этого потока, чтобы закрыть его.
Если вы используете StreamReader.ReadToEnd() для чтения текста из потока ответов, поток будет автоматически закрыт после прочтения содержимого.
MSDN описывает метод HttpWebResponse.close следующим образом:
Метод Close закрывает поток ответов и освобождает соединение с ресурсом для повторного использования другими запросами.
Необходимо вызвать метод Stream.Close или HttpWebResponse.Close, чтобы закрыть поток и освободить соединение для повторного использования. Нет необходимости вызывать Stream.Close и HttpWebResponse.Close одновременно, но это не приведет к ошибке. Если поток не закрыть, это может привести к тому, что приложению не хватит соединений.
Ограничение количества подключений, по-видимому, составляет максимум 2. Я не знаю, является ли это ограничением IIS или ограничением локального HttpWebRequest.