【问题标题】:WCF Client TimeoutsWCF 客户端超时
【发布时间】:2011-02-15 10:03:58
【问题描述】:

我有连接到 WCF 服务的 Silverlight 应用程序。

如果我在应用程序启动时打开打开的连接,然后在客户端调用方法之前说给它 10 分钟左右,它将超时。

我了解在 web.config 中更改超时时间很容易。

但是,我希望 WCF 服务在肥皂客户端关闭 5 分钟后保持活跃状态​​。 我想可能会在 Silverlight 中运行一个后台线程,该线程调用一个 WCF 方法,该方法什么都不做,但感觉相当 hacky。

还有更专业的方法吗?

谢谢

【问题讨论】:

  • 第一:据我了解,WCF 使用 HTTP 而不是 SOAP,这就是 WCF 服务比 XML Web 服务快的原因之一...... :)
  • 第二:即使没有人需要,为什么还要保持服务层运行?我认为您应该深入考虑这一点,并最终在这方面改进整体设计。
  • 例如,如果您有一个商务应用程序并且他们离开开会 24 小时,我希望他们回来时它仍然处于活动状态

标签: .net silverlight wcf


【解决方案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="infinite"。

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 2011-03-22
    • 2011-07-07
    • 2012-03-25
    • 2013-02-09
    • 2011-12-07
    • 2016-02-16
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多