症状
请考虑以下方案。 在 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 网站:
http://code.msdn.microsoft.com/KB918462注意 MSDN 代码库显示该修补程序可用的语言。 如果看不到列出的语言,则是因为代码库资源页面对该语言不可用。注意 如果出现其他问题或需要进行任何故障排除,则可能必须创建单独的服务请求。 对于此特定修补程序不具备的其他支持问题和问题,将照常收取支持费用。 有关 Microsoft 客户服务和支持电话号码的完整列表,或者要创建单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support
先决条件
必须安装 .NET Framework 2.0 才能应用此修补程序。
重启要求
应用此修补程序后,无需重新启动计算机。
修补程序替换信息
此修补程序不替代任何其他修补程序。
文件信息
此修补程序的英文版具有下表中列出的文件属性(或较新的文件属性)。 这些文件的日期和时间按协调世界时 (UTC) 列出。 在查看文件信息时,文件时间将转换为本地时间。 若要了解 UTC 与本地时间之间的时差,请使用控制面板中“日期和时间”项中的“时区”选项卡。
文件名 |
文件版本 |
文件大小 |
日期 |
时间 |
---|---|---|---|---|
System.dll |
2.0.50727.109 |
3018752 |
01-May-2006 |
21:15 |
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
更多信息
有关system.net.httpwebrequest类的详细信息,请访问以下 Microsoft 开发人员网络(MSDN)网站:
http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.aspx有关ObjectDisposedException类的详细信息,请访问下面的 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/system.objectdisposedexception.aspx有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684 用于描述 Microsoft 软件更新的标准术语的说明