解决WCF默认十分钟剔除客户端问题

    相信很多朋友在做WCF双工开发时会遇到这种问题,如果客户端十分钟不与客户端通信,则再次回调客户端时将产生异常,这主要是由于WCF为了防止拒绝式服务攻击,规定默认客户端空闲时间是十分钟,这显然不能满足大家需要,但是当我们设置好receiveTimeout属性时却发现没有起作用,当然有的朋友可能会设置inactivityTimeout此属性,也没有起作用。

    我们可以在MSDN找到官方解释:


 

    使用可靠会话时,必须同时满足两个不同的非活动计时器,才能使连接处于活动状态。 如果任一非活动计时器结束计时,则将断开连接。   

    第一个非活动计时器为可靠会话计时器,称为 InactivityTimeout 如果在超时期限内没有收到任何应用程序消息或基础结构消息,此非活动计时器将激发。 基础结构消息是指为了通道堆栈中的协议之一(例如,保持活动状态或确认,而并非包含应用程序数据)而生成的消息。

    第二个非活动计时器为服务计时器,它使用绑定的 ReceiveTimeout 设置。 如果在超时期限内没有收到任何应用程序消息,此非活动计时器将激发。 例如,它可以指定服务器关闭会话所用的通道前,客户端向服务器发送至少一个消息所需的最长时间。 此行为确保了客户端不能无限期地占用服务器资源。


    所以我们必须同时设置这两个属性,例如:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值