当您试图在生成在.net Framework 1.1 Service Pack 1 上的应用程序中制作的 HTTP 请求时,您会收到一个或多个错误消息

文章翻译 文章翻译
文章编号: 915599 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文介绍当您使用 Microsoft.net Framework 1.1 服务包 1 (SP1) 时可能会收到的错误消息,生成 HTTP 请求或当您调用 Web 服务。

症状

试图生成在.net 框架上的应用程序中制作的 HTTP 请求时,您可能会收到一个或多个以下错误消息:
错误消息 1
基础连接已关闭: 无法连接到远程服务器。
错误消息 2
基础连接已关闭: 在 $ 发送上发生意外的错误。
第 3 条错误消息
基础连接已关闭: 上一个接收时发生意外的错误。
错误消息 4
基础连接已关闭: 服务器提交了 HTTP 协议冲突。
错误消息 5
基础连接已关闭: 无法建立安全通道的 SSL/TLS。
错误消息 6
该操作已超时

原因

错误消息 1

当.net 框架不能建立到远程服务器连接时,会出现此问题。当一个时,可能会发生此问题或多个下列条件,则请执行以下操作:
  • 发生网络停用。
  • 代理服务器阻止 HTTP 请求。
  • 将出现域名系统 (DNS) 问题。
  • 将出现网络身份验证问题。
若要解决此问题,请参阅分辨率 A、 B,和 c。

错误消息 2

当客户端计算机不能发送 HTTP 时,就会出现此问题的请求。客户端计算机不能发送 HTTP 请求,因为连接已关闭或不可用。客户端计算机发送大量数据时,可能会出现此问题。若要解决此问题,请参阅分辨率 A、 D、 E、 F,和 o。

第 3 条错误消息

在服务器或另一个网络设备意外关闭现有的传输控制协议 (TCP) 连接时,会出现此问题。 当在服务器上或网络设备上的超时值设置太低,可能会出现此问题。若要解决此问题,请参阅分辨率 A、 D、 E、 F,和 o。如果服务器意外重置连接,如未处理的异常崩溃,服务器进程可以也出现该问题。 分析服务器日志,以查看是否这可能是问题。

错误消息 4

当检测到.net 框架,服务器响应不符合 HTTP 1.1 RFC 时,会出现此问题。当响应包含不正确的标头或不正确的标头分隔符时,可能会出现此问题。若要解决此问题,请参阅分辨率和 g。

有关 HTTP 标头的详细信息,请访问以下万维网联合会网站:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6
Microsoft 提供了第三方联系人信息可以帮助您找到技术支持。 此联系信息如有更改,恕不另行通知。Microsoft 不能保证此第三方联系人信息的准确性。

错误消息 5

当一个时,可能会发生此问题或多个下列条件,则请执行以下操作:
  • 您使用的一个无效的客户端证书或服务器证书无效。
  • 您遇到的 TCP 连接问题。
  • 客户端计算机发送大量数据。
  • 在服务器上或在其他网络设备上的超时设置设置得太低。
  • 您遇到的 HTTPS 协议的兼容性问题。
有关 TCP 的连接问题请参阅解决方法 A、 D、 E、 F,和 o。 有关客户端证书问题和服务器证书问题,请参阅解决方法 H 和 I。HTTPS 协议的兼容性问题请参阅解析 J.

错误消息 6

客户端超时值达到之前发生下列情况之一时,就会出现此问题:
  • 建立 HTTP 连接。
  • 从服务器收到的 HTTP 响应。
  • 数据流完全写入或读取。
若要解决此问题,请参阅分辨率 A、 E、 K、 L、 M,和 n。

解决方案

注意下面的列表包含可能的解决这些问题的一个发生时适用的方法。并非所有这些解决方法应用于所有这些问题。请参阅在"原因"部分以确定应用哪个解决的问题说明。

分辨率 A

若要解决此问题,请确保您正在使用.net 框架的最新版本。 有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
318785如何确定哪些版本的.net 框架安装并已是否应用服务包

分辨率 B

若要解决此问题,确保代理设置正确。若要执行此操作使用以下技术:
  • 使用静态 WebProxy.GetDefaultProxy 方法。有关详细的信息,请访问下面的 Microsoft 网站:
    http://msdn2.microsoft.com/en-us/library/system.net.webproxy.getdefaultproxy(vs.71).aspx
  • 定义一个 <proxy> 在应用程序配置文件中的元素。有关详细的信息,请访问下面的 Microsoft 网站:
    http://msdn2.microsoft.com/en-us/library/aa903369(VS.71).aspx
  • 若要通过更改 HttpWebRequest.ProtocolVersion 属性使用 HTTP 1.0.net 客户端配置。有关详细的信息,请访问下面的 Microsoft 网站:
    http://msdn2.microsoft.com/en-us/library/system.net.httpwebrequest.protocolversion(vs.71).aspx
    注意默认状态下,.net 框架使用 HTTP 1.1。
  • 如果使用的安全套接字层 (SSL) 确保代理未配置为使用当前阻塞 HTTPS 的任何规则。
  • 如果使用的 autoproxy 单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    873199如何在托管代码中使用 autoproxy

分辨率 C

要解决此问题,请确保该应用程序有权限进行网络调用,并使套接字调用。在 Web 应用程序内运行的应用程序,使得 HttpWebRequest 调用时,将应用此分辨率。您可能要授予读取权限,ASPNET 帐户,这样您就可以访问以下资源:
  • Microsoft WinSockProxy WS2.0 提供程序 (Wspwsp.dll) 文件
  • HKLM\System\CurrentControlSet\Services\DnsCache
    注册表项
  • HKLM\System\CurrentControlSet\Services\WinSock2
    注册表项
注意若要确定 ASPNET 工作进程是否具有所需的权限,使用 $ FileMon 实用程序和 $ RegMon 实用程序。要下载 FileMon 实用程序和 $ RegMon 实用工具,请访问下面的 Sysinternals 网站:
http://technet.microsoft.com/en-us/sysinternals/default.aspx
本文讨论了在第三方产品是由独立于 Microsoft 的公司生产的。Microsoft 会使没有担保,或暗示或其他方式,性能或可靠性,这些产品。

分辨率 D

若要解决此问题,禁用保持活动状态的功能。在.net 框架将 HttpWebRequest.KeepAlive 属性设置为 FALSE。调用 Web 服务时,请执行此操作,请按照下列步骤操作。

注意NTLM 身份验证要求保持活动状态的功能。
  1. 通过从生成的代理类继承创建一个新的类。
  2. 将方法添加到类重写 GetWebRequest 方法。此更改允许您访问 HttpWebRequest 对象。如果使用的 Microsoft Visual C#,新的方法必须是类似于
    class MyTestService:TestService.TestService
    {
        protected override WebRequest GetWebRequest(Uri uri)
        {
            HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);
            //Setting KeepAlive to false
            webRequest.KeepAlive = false;
            return webRequest;
        }
    }
    如果使用的 Microsoft Visual Basic.net 新的方法必须是类似于以下
    Class MyTestService 
         Inherits TestService.TestService
            Protected Overrides Function GetWebRequest(ByVal uri As Uri) As System.Net.WebRequest
                Dim webRequest As System.Net.HttpWebRequest
                webRequest = CType(MyBase.GetWebRequest(uri), System.Net.HttpWebRequest)
               'Setting KeepAlive to false 
                webRequest.KeepAlive = False
                GetWebRequest = webRequest
            End Function
    End Class
    以下。
  3. 创建新的类的实例,然后使用新类调用 Web 服务方法。

分辨率 E

若要解决此问题,将 ServicePointManager.MaxServicePointIdleTime 属性设置为小于服务器保持活动连接的超时值。

备注
  • ServicePoint 对象已空闲了 MaxIdleTime 属性中指定的时间时,是符合垃圾回收的条件。
  • 请确保该 ServicePointManager.MaxServicePointIdleTime 属性设置之前所做的任何 HTTP 请求。有关 ServicePointManager.MaxSercvePointIdleTime 属性的详细信息,请访问下面的 Microsoft 网站:
    http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.maxservicepointidletime(vs.71).aspx

分辨率 F

若要解决此问题,增加超时值在服务器计算机和其他网络设备上。若要增加超时值以 Microsoft Internet Information Services (IIS) 6.0,请按照下列步骤操作:
  1. 单击 开始,单击 控制面板,单击 管理工具,然后单击 Internet Information Services (IIS) 管理器
  2. 单击想要重新配置,计算机的名称,然后单击 网站
  3. 用鼠标右键单击您想重新配置的网站,然后单击 属性
  4. 连接超时 中键入一个新值框,然后再单击 确定
  5. 文件 菜单上单击 退出

分辨率 G

要变通解决此问题,将 useUnsafeHeaderParsing 设置为 True。有关 useUnsafeHeaderParsing 属性的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
888528.NET Framework 1.1 Service Pack 1 中所修复,但不是介绍其他位置在单独的 Microsoft 知识库文章中的 bug 的列表

分辨率 H

若要解决此问题,提供有效的客户端证书为应用程序。 有关如何使用客户端证书的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
901183如何调用 Web 服务使用在 ASP.NET Web 应用程序中进行身份验证的客户端证书
895971如何使用 Microsoft Visual C#.net 中的 HttpWebRequest 和 HttpWebResponse 类发送客户端证书

分辨率我

若要解决此问题,提供有效的安全证书的服务器。此外,您可以通过安装根证书颁发机构 (CA) 证书,或者通过更正常见的服务器证书名称来解决此问题。有关命名服务器证书的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
813618安全警报: 该安全证书的名称无效或与网站的名称不匹配
警告此替代方法可能会使您的计算机或网络更容易受到恶意用户或恶意软件 (如病毒的攻击。我们不建议使用此替代方法,但提供此信息,以便您可以在您应自行决定实施此替代方法。使用此替代方法需要您自担风险。

您还可以修改应用程序代码将忽略这些证书警告。若要执行此操作实现您自己 ICertificatePolicy 接口。然后,您可以设置要使用的 Web 服务方法调用之前您的证书策略实例 ServicePointManager.CertificatePolicy 属性。

注意ICertificatePolicy.CheckValidationResult 方法实现应用程序的证书验证策略。 有关 ICertificatePolicy.CheckValidationResult 方法的详细信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/system.net.icertificatepolicy.checkvalidationresult(vs.71).aspx
有关更多的信息和一个代码示例,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
823177PRB:"System.Net.WebException。基础连接已关闭。当您升级.net 框架时无法建立与远程服务器的信任关系"错误消息
重要我们建议您不忽略 SSL 证书警告在代码中的由于的可能的安全风险。

分辨率 J

若要解决此问题,更改 HTTPS 协议从 SSL 传输级别安全 (TLS)。

注意如果已经使用 TLS 更改 ssl HTTPS 协议。若要将在客户端计算机上的 HTTPS 协议请参阅 "ServicePointManager.SecurityProtocol 属性"节以下 Microsoft 网站上:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.securityprotocol.aspx
注意例如对于支持 SSL3 协议和 $ TLS1 协议,使用类似于代码下列。
ServicePointManager.SecurityProtocol= SecurityProtocolType.Ssl3|SecurityProtocolType.Tls;
有关如何更改在服务器计算机上的 HTTPS 协议的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
187498如何禁用 PCT 1.0、 SSL 2.0、 SSL 3.0 或 TLS 1.0 中 Internet Information Services

分辨率 K

若要解决此问题,增加 maxConnection 属性的值。执行此操作,修改用于应用程序配置文件或添加应用程序代码。

注意maxConnection 属性的默认值为 2。对于 Microsoft ASP.NET 连接的应用程序调用 Web 服务,我们建议您设置 12 次的处理器数的值。若要使用的应用程序代码中设置此值,使用 $ ServicePointManager.DefaultConnectionLimit 属性。有关 ServicePointManager.DefaultConnectionLimit 属性的详细信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(vs.71).aspx
若要将此值设置为应用程序中使用配置文件,将下面的代码添加到配置文件
<connectionManagement>
  <add address="*" maxconnection="12"/>
</connectionManagement>
有关如何使用该 <connectionmanagement>的详细信息 元素,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/aa903351(VS.71).aspx

分辨率 L

若要解决此问题,请确保正确实施了超时设置,服务器和其他网络设备上。有关如何实现超时设置的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
904262发送的 HttpWebRequest 类请求可能会停止响应时在 ASP.NET 应用程序中使用 HttpWebRequest 类

分辨率 M

若要解决此问题,读取有关 ASP.NET 性能调整。有关 ASP.NET 性能调整的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
821268争用、 较差的性能和死锁时使 ASP.NET 应用程序的 Web 服务请求

解析 N

若要解决此问题,增加在客户端应用程序代码中将超时属性的值。若要执行此操作使用以下属性:
  • HttpWebRequest.Timeout
  • HttpWebRequest.ReadWriteTimeout
有关 HttpWebRequest.Timeout 属性的详细信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/cy9yd268.aspx
有关 HttpWebRequest.ReadWriteTimeout 属性的详细信息,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/b1w9c0s4.aspx

分辨率 O

若要解决此问题,请确保客户端计算机不会发送 HTTP 100-继续标头。此外,请确保客户端计算机不会不会收到 HTTP 100-继续标头。

注意此解决方法是有效的如果 Web 服务器或代理服务器不支持 HTTP 100-继续标头。有关如何禁用 HTTP 100 的详细信息-继续为客户端计算机的标头,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/system.net.servicepointmanager.expect100continue.aspx

参考

有关在进行 Web 服务调用从 ASP.NET 连接应用程序,请访问下面的 Microsoft Web 站点时的性能考虑事项的详细信息:
http://msdn2.microsoft.com/en-us/library/aa480507.aspx
有关性能问题和死锁问题进行 Web 请求的 ASP.NET 连接应用程序提供服务,请单击下面的文章编号,以查看 Microsoft 知识库中的文章时的详细信息:
821268争用、 较差的性能和死锁时使 ASP.NET 应用程序的 Web 服务请求
有关如何提高 ASP.NET 连接应用程序的性能的详细信息请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/ms998549.aspx
有关如何提高 Web 性能的详细信息服务,请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/ms998562.aspx
有关如何构建安全的 ASP.NET 连接应用程序的详细信息请访问下面的 Microsoft 网站:
http://msdn2.microsoft.com/en-us/library/aa302408.aspx
注意HTTP 请求使用 TCP 传输协议。TCP 是一种可靠的、 面向连接的协议。但是,如果意外关闭 TCP 连接,应用程序重试请求。有关 TCP 的详细信息的协议和关于客户端行为如果在服务器关闭了连接访问以下万维网联合会网站:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.4
Microsoft 提供了第三方联系人信息可以帮助您找到技术支持。 此联系信息如有更改,恕不另行通知。Microsoft 不能保证此第三方联系人信息的准确性。 有关 FileMon 实用程序和 $ RegMon 实用工具的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
198038包和部署问题的有用工具
有关网络监视器的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
148942如何捕获使用网络监视器的网络通信
812953 如何使用网络监视器捕获网络通信

属性

文章编号: 915599 - 最后修改: 2009年2月8日 - 修订: 2.2
这篇文章中的信息适用于:
  • Microsoft .NET Framework 1.1 Service Pack 1
关键字:?
kbmt kbtshoot kbprb KB915599 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 915599
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com