修复︰ 基于 Microsoft.NET Framework 2.0 Service Pack 2 和异步调用 Web 服务调用的应用程序将引发异常运行 Windows 7 的计算机上

适用于: Windows 7 EnterpriseWindows 7 Enterprise NWindows 7 Professional

症状


在计算机上运行 Windows 7,您将遇到一个或多个以下症状。

症状 1

请考虑以下情形:
  • 运行在服务器使用 Microsoft.NET Framework 2.0 Service Pack 2 (SP2) 的异步 Web 服务。

  • HttpWebRequest异步操作将 Web 请求发送到 Web 服务。
  • Web 服务会引发异常。
在这种情况下, HttpWebRequest异步操作不会调用BeginGetResponse方法或回调函数。不过,是意外完成HttpWebRequest异步操作。然后,Web 服务停止响应。此外,在服务器上的 CPU 使用率可能会增加到 100%,然后在服务器停止响应。

症状

请考虑以下情形:
  • 运行 Microsoft.NET Framework 2.0 SP2 基于应用程序调用 Web 服务通过使用 Microsoft ASP.NET Web 服务客户端组件。例如,由 Wsdl.exe 过程中,生成的应用程序代码或应用程序调用SoapHttpClientProtocol类。
  • 客户端异步调用 Web 服务调用。
  • 客户端向服务器发送一个请求。
  • 然后,客户端接收包含零长度的内容的 Web 响应。
当 Web 服务尝试处理此响应在这种情况下时, System.ArgumentNullException将异常。然后,您会收到以下错误消息︰
值不能为空。
注意:当客户端调用 Web 服务调用同步,不会出现此问题。

原因


症状 1

由于.NET Framework 异常处理不会考虑的这样的HttpWebRequest.EndGetRequestStream方法引发一个异常,该异常包含来自服务器的响应时,将发生此问题。

解决方案


修补程序信息

受支持的修补程序现已从 Microsoft 推出。但是,它旨在纠正本文介绍的问题。它仅应用于正经历此特定问题的系统。

若要下载此修补程序,请访问下面的 Microsoft 连接 Web 站点︰

状态


Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

详细信息


有关"症状 1"一节中描述的问题的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰

973134解决︰ Web 服务停止响应,并且在运行基于.NET Framework 2.0 S 异步 Web 服务时,将引发异常

有关"症状 2"一节中描述的问题的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章︰

973136解决︰ ArgumentNullException 异常错误信息时基于.NET Framework 2.0 S 的应用程序尝试处理带有空内容对异步 ASP.NET Web 服务请求的响应:"值不能为空"