zoukankan      html  css  js  c++  java
  • WCF服务调用超时错误:套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“00:05:30”(已解决)

    问题:

      线上正式环境调用WCF服务正常,但是每次使用本地测试环境调用WCF服务时长就是出现:套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的。本地套接字超时是“00:05:30” 这个问题,查阅了网上很多资料各种说法的都有,有的说是什么请求站点不在同一个域下,有的说什么应为datatable中有一个属性没有赋值各种答非所问的问题。其实从错误信息中就可以看出来其实就是调用超时了。

    解决方案:

    在调用wcf的服务端的web.config中配置netTcpBinding这个配置,将receiveTimeout完成接收操作提供的时间间隔设置为:00:05:30即可解决(或者使用默认配置:00:10:00,不配置即可)。

    这是我在我的服务端配置的相关参数(仅供大家参考),大家可以根据自己的需求配置:

    <netTcpBinding>
    
        <!--binding:此元素包含标准绑定和自定义绑定的集合-->
        <binding portSharingEnabled="true" receiveTimeout="00:05:30" openTimeout="00:01:00" sendTimeout="00:01:00">
            <!--定义绑定的安全设置,mode="None"禁用安全性--> 
             <security mode="None"/> 
            <!--定义可由采用此绑定配置的终结点进行处理的 SOAP 消息的复杂性约束-->
            <readerQuotas maxDepth="32" maxStringContentLength="65536000" maxArrayLength="65536000" maxBytesPerRead="4096" maxNameTableCharCount="16384"/> 
        </binding> 
    
    </netTcpBinding>

    netTcpBinding配置说明

    官方详细说明☞

    security 的 netTcpBinding☞

    特性和元素

    下列各节描述了特性、子元素和父元素。

    特性

    特性
    特性说明
    closeTimeout 一个 TimeSpan 值,指定为完成关闭操作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。
    hostNameComparisonMode 指定用于分析 URI 的 HTTP 主机名比较模式。 此属性的类型为 HostNameComparisonMode,指示在对 URI 进行匹配时,是否使用主机名来访问服务。 默认值为 StrongWildcard,表示忽略匹配项中的主机名。
    listenBacklog 一个正整数,指定侦听器上等待接受的最大通道数。 超出此限制的连接会被排队,直到连接数低于限制值。 connectionTimeout 属性限制客户端在引发连接异常之前将等待连接的时间。 默认值为 10。
    maxBufferPoolSize 一个整数,指定此绑定的最大缓冲池大小。 默认值为 512 * 1024 字节。 Windows Communication Foundation (WCF) 的许多部件使用缓冲区。 每次使用缓冲区时,创建和销毁它们都将占用大量资源,而缓冲区的垃圾回收过程也是如此。 利用缓冲池,可以从缓冲池中获得缓冲区,使用缓冲区,然后在完成工作后将其返回给缓冲池。 这样就避免了创建和销毁缓冲区的系统开销。
    maxBufferSize 一个正整数,指定内存中用于存储消息的缓冲区的最大大小(字节)。

    如果 transferMode 属性等于 Buffered,则此属性应等于 maxReceivedMessageSize 属性值。

    如果 transferMode 属性等于 Streamed,则此属性不能大于 maxReceivedMessageSize 属性值,应当至少为标头的大小。

    默认值为 65536。 有关详细信息,请参阅 MaxBufferSize
    maxConnections 一个整数,指定服务将创建/接受的最大出站和入站连接数。 传入和传出连接分别根据此属性指定的限制进行计数。

    超出此限制的入站连接需要排队,直到连接数低于限制值。

    超出此限制的出站连接需要排队,直到连接数低于限制值。

    默认值为 10。
    maxReceivedMessageSize 一个正整数,指定采用此绑定配置的通道上可以接收的最大消息大小(字节),包括消息头。 如果消息超出此限制,则发送方将收到 SOAP 错误。 接收方将删除该消息,并在跟踪日志中创建事件项。 默认值为 65536。
    name 一个包含绑定的配置名称的字符串。 因为此值用作绑定的标识,所以它应该是唯一的。 从 .NET Framework 4 开始,绑定和行为不需要具有名称。 有关默认配置和无值绑定和行为的详细信息,请参阅WCF 服务的简化配置和简化配置。
    openTimeout 一个 TimeSpan 值,指定为完成打开操作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。
    portSharingEnabled 一个布尔值,指定是否为此连接启用 TCP 端口共享。 如果此值为 false,则每个绑定都使用自己的独占端口。 此设置只与服务相关,因为客户端不受影响。
    receiveTimeout 一个 TimeSpan 值,指定为完成接收操作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:10:00。
    sendTimeout 一个 TimeSpan 值,指定为完成发送操作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。
    transactionFlow 一个布尔值,指定绑定是否支持流动 WS-Transactions。 默认为 false
    transactionProtocol 指定与此绑定一起使用的事务处理协议。 有效值为

    -OleTransactions
    -WSAtomicTransactionOctober2004

    默认值为 OleTransactions。 此属性的类型为 TransactionProtocol
    transferMode 一个 TransferMode 值,指定为请求或响应对消息进行缓冲处理还是流式处理。

    子元素

    子元素
    元素说明
    <security> 定义绑定的安全设置。 此元素的类型为 NetTcpSecurityElement
    <readerQuotas> 定义可由采用此绑定配置的终结点进行处理的 SOAP 消息的复杂性约束。 此元素的类型为 XmlDictionaryReaderQuotasElement
    <reliableSession> 指定是否在通道终结点之间建立可靠会话。

    父元素

    父元素
    元素说明
    <bindings> 此元素包含标准绑定和自定义绑定的集合。

    作者:追逐时光者

    作者简介:一个热爱编程,善于分享,喜欢学习、探索、尝试新事物,新技术的程序猿。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得时光这篇文章有帮助的话,可以点一下右下角的【♥推荐♥】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确或错误的地方,欢迎指正、补充,不胜感激 !

  • 相关阅读:
    Spring Boot (20) 拦截器
    Spring Boot (19) servlet、filter、listener
    Spring Boot (18) @Async异步
    Spring Boot (17) 发送邮件
    Spring Boot (16) logback和access日志
    Spring Boot (15) pom.xml设置
    Spring Boot (14) 数据源配置原理
    Spring Boot (13) druid监控
    Spring boot (12) tomcat jdbc连接池
    Spring Boot (11) mybatis 关联映射
  • 原文地址:https://www.cnblogs.com/Can-daydayup/p/15391600.html
Copyright © 2011-2022 走看看