Исправление: при попытке доступа к объекту Stream, возвращаемому методом EndGetRequestStream в .NET Framework 2,0, появляется исключение System. ObjectDisposedException.


Проблемы


Вот сценарий, описанный ниже. В Microsoft .NET Framework 2,0 для выполнения асинхронного HTTP-запроса используются метод BeginGetRequestStream и метод EndGetRequestStream в классе HttpWebRequest . В этом случае при попытке доступа к объекту Stream , возвращенному методом EndGetRequestStream , появляется исключение System. ObjectDisposedException . Примечание. Эта проблема возникает только в том случае, если свойству method в классе HttpWebRequest задано свойство Protocol для передачи данных. Например, свойству method задается значение POST.

Причина


Эта проблема возникает в том случае, если веб-сервер сбрасывает или закрывает подключение после того, как клиентское приложение отправляет заголовок HTTP. Класс HttpWebRequest автоматически пытается открыть подключение к веб-серверу, чтобы завершить передачу. При успешном завершении передачи метод EndGetRequestStream неправильно возвращает объект Stream из первой попытки подключения, а не объекта Stream из успешных попыток подключения. Когда клиентское приложение попытается использовать этот ликвидированный объект потока , возникает исключение System. ObjectDisposedException .

Решение


Сведения об исправлении

Доступно исправление от корпорации Майкрософт. Однако это исправление предназначено для устранения только проблемы, описанной в этой статье. Применяйте это исправление только для систем, в которых наблюдаются указанные выше проблемы. Это исправление может получать дополнительное тестирование. По этой причине корпорация Майкрософт рекомендует во всех случаях, когда проблема не представляет особой важности, дождаться следующего обновления программного обеспечения, содержащего это исправление. Чтобы загрузить это исправление из коллекции кода MSDN, посетите веб-сайт Майкрософт по следующему адресу:Примечание. В коллекции кода MSDN выводятся языки, для которых доступно исправление. Если язык не отображается в списке, это связано с тем, что страница ресурсов коллекции кода для этого языка недоступна.Примечание. Если возникнут дополнительные проблемы или требуется устранение неполадок, возможно, потребуется создать отдельный запрос на обслуживание. Для дополнительных вопросов и проблем, которые не могут быть неполными для данного исправления, действуют стандартные затраты на поддержку. Чтобы получить полный список номеров телефонов службы поддержки пользователей Майкрософт, а также для создания отдельного запроса на обслуживание, посетите веб-сайт Майкрософт по следующему адресу:

Предварительные условия

Чтобы применить это исправление, необходимо установить платформу .NET Framework 2,0.

Требование перезагрузки

После установки этого исправления перезагружать компьютер не требуется.

Сведения о замене исправлений

Это исправление не заменяет других исправлений.

Сведения о файлах

Английская версия исправления содержит файлы с атрибутами, указанными в следующей таблице, или более поздние. Даты и время для файлов указаны в формате времени UTC. При просмотре сведений о файле в системе происходит перевод соответствующих значений на местное время. Чтобы узнать разницу между временем UTC и местным временем, откройте вкладку Часовой пояс элемента Дата и время панели управления.
Имя файлаВерсия файлаРазмердатаВремя
System.dll2.0.50727.1093 018 75201-May-200621:15

Статус


Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Дополнительная информация


Дополнительные сведения о классе HttpWebRequest можно найти на веб-сайте Microsoft Developer Network (MSDN) по следующему адресу:Дополнительные сведения о классе System. ObjectDisposedException можно найти на веб-сайте MSDN по следующему адресу:Для получения дополнительной информации щелкните приведенный ниже номер статьи базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт