“底层连接已关闭:在调用SOAP时,服务器将关闭预期保持活动状态的连接”

时间:2018-02-12 15:08:46

标签: .net wcf soap wsdl wcf-binding

我有时会收到错误“基础连接已关闭:当调用另一个WSDL服务时,服务器将关闭预期保持活动状态的连接。”

我使用.Net 4.5 WCF服务,我的应用程序连接到外部第三方SOAP-WSDL服务以执行操作。大多数对此服务的调用都已成功完成,但有一个特定的调用,其中5%的调用因该错误而失败

The underlying connection was closed: A connection that was expected to be kept alive was closed by the server

以下是该服务的bindingConfiguration

<bindings>
      <customBinding>
        <binding name="AnotherServiceSoap12Binding" openTimeout="01:30" receiveTimeout="01:30" sendTimeout="01:30" closeTimeout="01:30">
          <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" messageVersion="Soap12" writeEncoding="utf-8">
            <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="999999" />
          </textMessageEncoding>
          <httpTransport manualAddressing="false" 
            allowCookies="false" authenticationScheme="Anonymous" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true" 

                maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" 
            proxyAuthenticationScheme="Anonymous" realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="true" />
        </binding>
      </customBinding>
    </bindings>

另外我从日志中注意到连接没有超时,在错误出现之前大约需要10秒。

知道问题是什么,或者我怎样才能获得更多数据来检测它的根本原因。我还需要知道修复程序是应该来自我的客户端应用程序还是来自第三方服务。

1 个答案:

答案 0 :(得分:0)

您应该检查第三方服务的客户端端点绑定/private/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/MyApp/myFile. 的客户端配置是否相同,并且您的传输需要满足双方的所需要求。

openTimeout="01:30" receiveTimeout="01:30" sendTimeout="01:30" closeTimeout="01:30"

当客户端超时大于服务器超时时,会发生此错误。 要避免此错误,应增加receiveTimeout和sendTimeout。