什么可能导致一个服务器上的此错误,而不是另一个?

Rac*_*hel 5 vb.net asp.net web-services

我们有一个连接到外部Web服务的ASP.Net网站,它几天前突然停止工作.

基本代码是这样的:

Try
    request = New ExternalWebService.ProcessRequestService

    ' Error occurs here:
    response = request.processCommand(parameters)

    ' Do some other stuff with response here

Catch webEx As System.Net.WebException

    ' This triggers and generic error gets displayed

Catch ex As Exception

Finally

End Try
Run Code Online (Sandbox Code Playgroud)

System.Net.WebException被带引发SendFailure的异常,并返回此堆栈跟踪:

The underlying connection was closed: An unexpected error occurred on a send. -
    at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
    at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
    at ExternalWebService.ProcessRequestService.processCommand(parameters)

当我尝试在我的开发机器上调试此问题时,它工作正常,不会发生异常.

我们的网络服务器最近没有更新,我可以使用FireFox从Web服务器连接到wsdl服务(但我无法与IE连接,但这可能与我们在网络服务器上与IE有关的其他问题有关)

我试过张贴错误消息#2之所有决议案在这里,包括设置KeepAlive = FalseServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3,但是,没有一直在努力解决这个问题.

我们的网络服务器运行Windows Server 2003和IIS6.0

什么可能导致这个错误发生在一台机器上,而不是另一台机器上?

编辑:这是跟踪信息:

System.Web.Services.Asmx Information: 0 : Calling XmlSerializer [Create XmlSerializer]
    Method: System.Xml.Serialization.XmlSerializer#1669721556::FromMappings(System.Xml.Serialization.XmlMapping[]#4002219=[4], ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService)
    Caller: System.Web.Services.Protocols.SoapClientType#42808772::.ctor(ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService)
    ProcessId=2796
    LogicalOperationStack=
    ThreadId=14
    DateTime=2012-12-21T17:02:39.2826250Z
    Timestamp=61755143048799345
System.Web.Services.Asmx Information: 0 : Return from XmlSerializer [Create XmlSerializer]
    Caller: System.Web.Services.Protocols.SoapClientType#42808772::.ctor(ExternalWebService.ProcessRequestService#93032588=ExternalWebService.ProcessRequestService)
    ProcessId=2796
    LogicalOperationStack=
    ThreadId=14
    DateTime=2012-12-21T17:02:39.6576250Z
    Timestamp=61755144323396760
System.Web.Services.Asmx Information: 0 : Calling XmlSerializer [Write Request]
    Method: Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer#1231684::Serialize(System.Xml.XmlTextWriter#8023888=.., System.Object[]#19695157=[40], (null), (null))
    Caller: ExternalWebService.ProcessRequestService#60553900::Serialize()
    ProcessId=2796
    LogicalOperationStack=
    ThreadId=14
    DateTime=2012-12-21T17:02:39.7357500Z
    Timestamp=61755144598320131
System.Web.Services.Asmx Information: 0 : Return from XmlSerializer [Write Request]
    Caller: ExternalWebService.ProcessRequestService#60553900::Serialize()
    ProcessId=2796
    LogicalOperationStack=
    ThreadId=14
    DateTime=2012-12-21T17:02:39.7357500Z
    Timestamp=61755144621621529
System.Web.Services.Asmx Information: 0 : Calling WebRequest.GetResponse
    Method: System.Net.HttpWebRequest#2800407::GetResponse()
    Caller: ExternalWebService.ProcessRequestService#60553900::GetWebResponse()
    ProcessId=2796
    LogicalOperationStack=
    ThreadId=14
    DateTime=2012-12-21T17:02:39.7357500Z
    Timestamp=61755144622114240

Rac*_*hel 3

显然,在我的特定情况下,这是因为 Web 服务供应商提高了安全性,而我们的 Web 服务器没有解密连接所需的正确库。

我们唯一的线索是一个 ID 为 36874 的系统事件查看器条目,以及几天前我们网站停止工作的同一天的 Schannel 源,内容如下:

从远程客户端应用程序收到 SSL 连接请求,但服务器不支持客户端应用程序支持的任何密码套件。SSL 连接请求失败。

但是,如果您自己调试这个问题,这个链接非常有用,因为它提供了一些错误的简化描述,为我指明了正确的方向,我的问题与无法连接到他们的 Web 服务有关。

底层连接已关闭:发送时发生意外错误

当客户端计算机无法发送 HTTP 请求时,就会出现此问题。由于连接已关闭或不可用,客户端计算机无法发送 HTTP 请求。在本文http://support.microsoft.com/kb/915599中查找错误。

链接的 Microsoft 支持页面也相当详细地介绍了一些不同的解决方案,您可以尝试解决此问题的最常见原因。