修复:尝试访问由 .NET Framework 2.0 中的 EndGetRequestStream 方法返回的 Stream 对象时,收到 ObjectDisposedException 异常。


症状


请考虑以下方案。 在 Microsoft .NET Framework 2.0 中,使用BeginGetRequestStream方法和system.net.httpwebrequest类中的ENDGETREQUESTSTREAM方法来完成异步 HTTP 请求。 在此方案中,当你尝试访问由EndGetRequestStream方法返回的Stream对象时,将收到ObjectDisposedException异常。 注意 仅当将system.net.httpwebrequest类中的Method属性设置为用于上载数据的协议属性时,才会出现此问题。 例如,将Method属性设置为POST

原因


当 Web 服务器在客户端应用程序发送 HTTP 标头后重置或关闭连接时会出现此问题。 System.net.httpwebrequest类自动尝试重新打开与 Web 服务器的连接以完成传输。 传送成功后, EndGetRequestStream方法会错误地从第一次失败的连接尝试(而不是从成功的连接尝试中的对象)返回stream对象。 当客户端应用程序尝试使用此已释放对象时,将引发ObjectDisposedException异常。

解决方案


修补程序信息

Microsoft 提供了一个受支持的修补程序。但是,此修补程序仅用于更正本文中所述的问题。仅对遇到此特定问题的系统应用此修补程序。此修补程序可能会接受其他测试。因此,如果你不会对此问题造成严重影响,我们建议你等待包含此修补程序的下一个软件更新。若要从 MSDN 代码库下载此修补程序,请访问下面的 Microsoft 网站:注意 MSDN 代码库显示该修补程序可用的语言。 如果看不到列出的语言,则是因为代码库资源页面对该语言不可用。注意 如果出现其他问题或需要进行任何故障排除,则可能必须创建单独的服务请求。 对于此特定修补程序不具备的其他支持问题和问题,将照常收取支持费用。 有关 Microsoft 客户服务和支持电话号码的完整列表,或者要创建单独的服务请求,请访问下面的 Microsoft 网站:

先决条件

必须安装 .NET Framework 2.0 才能应用此修补程序。

重启要求

应用此修补程序后,无需重新启动计算机。

修补程序替换信息

此修补程序不替代任何其他修补程序。

文件信息

此修补程序的英文版具有下表中列出的文件属性(或较新的文件属性)。 这些文件的日期和时间按协调世界时 (UTC) 列出。 在查看文件信息时,文件时间将转换为本地时间。 若要了解 UTC 与本地时间之间的时差,请使用控制面板中“日期和时间”项中的“时区”选项卡。
文件名文件版本文件大小日期时间
System.dll2.0.50727.109301875201-May-200621:15

状态


Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

更多信息


有关system.net.httpwebrequest类的详细信息,请访问以下 Microsoft 开发人员网络(MSDN)网站:有关ObjectDisposedException类的详细信息,请访问下面的 MSDN 网站:有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684 用于描述 Microsoft 软件更新的标准术语的说明