症状
在运行 Windows 7 的计算机上,你会遇到以下一种或多种症状。
症状 1
请考虑以下情形:
您在服务器上运行使用 Microsoft .NET Framework 2.0 Service Pack 2 (SP2) 的异步 Web 服务。
HttpWebRequest 异步操作向 Web 服务发送 Web 请求。
Web 服务引发异常。
在这种情况下,HttpWebRequest 异步操作不调用 BeginGetResponse 方法或回调函数。 但是,HttpWebRequest 异步操作意外完成。 然后,Web 服务停止响应。 此外,服务器上的 CPU 使用率可能会增加到 100%,然后服务器停止响应。
症状 2
请考虑以下情形:
- 您运行基于 Microsoft .NET Framework 2.0 SP2 的应用程序,该应用程序使用 Microsoft ASP.NET Web 服务客户端组件调用 Web 服务。 例如,应用程序代码是由 Wsdl.exe 进程生成的,或者应用程序调用 SoapHttpClientProtocol 类。
- 客户端异步调用 Web 服务调用。
- 客户端向服务器发送请求。
- 然后,客户端将收到包含零长度内容的 Web 响应。
在这种情况下,当 Web 服务尝试处理此响应时,将引发 System.ArgumentNullException 异常。 然后,你会收到以下错误消息:
注意
值不能为 null。
注意 当客户端同步调用 Web 服务调用时,不会出现此问题。
原因
症状 1
出现此问题的原因是,.NET Framework 异常处理没有考虑 HttpWebRequest.EndGetRequestStream 方法在该异常包含来自服务器的响应时引发异常的情况。
解决方法
修补程序信息
Microsoft 现在提供了一个受支持的修补程序。 但是,它仅用于更正本文描述的问题。 仅将其应用于遇到此特定问题的系统。
若要下载此修补程序,请访问以下 Microsoft Connect 网站:
http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=27977
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
详细信息
有关“症状 1”部分中所述问题的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
973134修复:运行基于 .NET Framework 2.0 S 的异步 Web 服务时,Web 服务停止响应,并引发异常
有关“症状 2”部分中描述的问题的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
973136修复:当基于 .NET Framework 2.0 S 的应用程序尝试处理对异步 ASP.NET Web 服务请求的具有零长度内容的响应时,出现 ArgumentNullException 异常错误消息:“值不能为 null”