我有连接到WCF服务的Silverlight应用程序。
如果我在应用程序启动时打开打开的连接,然后在客户端调用方法之前给它10分钟左右,它会超时。
我知道在web.config中更改超时时间很容易。
然而,我正在寻找WCF服务在soap客户端关闭后5分钟保持活动状态。 我可能会在Silverlight中运行一个后台线程,它调用一个WCF方法,该方法没有做任何事情,但这感觉相当hacky。
有更专业的方法吗?
由于
答案 0 :(得分:1)
您可以将InstanceContextMode更改为signleton并在服务构造函数中启动该服务。使用signleton模式意味着您的会话永不过期。
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
另一个解决方案是将InstanceContextMode更改为PerSession并将InactivityTimeout设置为1小时。
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding" >
<reliableSession inactivityTimeout="01:00:00" enabled="true" />
</binding>
</wsHttpBinding>
</bindings>
更新(阅读评论后):您还可以设置inactivityTimeout =“无限”。