.net WCF客户端超时
我有一个连接到WCF服务的Silverlight应用程序 如果我在应用程序开始时打开打开的连接,然后说在客户端调用方法之前给它10分钟左右的时间,它将超时 我知道在web.config中更改超时时间很容易 但是,我希望WCF服务在soap客户端关闭5分钟后保持活动状态。 我想也许在Silverlight中运行一个后台线程,调用一个WCF方法,这个方法什么都不做,但感觉相当粗糙 有没有更专业的方法.net WCF客户端超时,.net,silverlight,wcf,.net,Silverlight,Wcf,我有一个连接到WCF服务的Silverlight应用程序 如果我在应用程序开始时打开打开的连接,然后说在客户端调用方法之前给它10分钟左右的时间,它将超时 我知道在web.config中更改超时时间很容易 但是,我希望WCF服务在soap客户端关闭5分钟后保持活动状态。 我想也许在Silverlight中运行一个后台线程,调用一个WCF方法,这个方法什么都不做,但感觉相当粗糙 有没有更专业的方法 谢谢您可以将InstanceContextMode更改为signleton,并在服务构造函数中启动服
谢谢您可以将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=“infinite”。您可以将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=“infinite”。首先:据我所知,WCF使用HTTP而不是SOAP,这是WCF服务比XML Web服务更快的原因之一…:)第二:即使没有人需要服务层,为什么还要让它保持运行?我认为你应该仔细考虑这一点,并最终改善这方面的总体设计。例如,如果你有一个Basness应用程序,他们走了24小时,我希望它仍然是活跃的,当他们回到第一:我的理解WCF使用HTTP,但不是肥皂,这就是为什么WCF服务比XML Web服务更快的原因之一…:)第二:即使没有人需要服务层,为什么还要让它保持运行?我认为你应该仔细考虑这一点,并最终改善这方面的总体设计。例如,如果你有一个Basness申请,他们走了24个小时,我希望它仍然活跃时,他们回来。