Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WCF客户端超时_.net_Silverlight_Wcf - Fatal编程技术网

.net WCF客户端超时

.net WCF客户端超时,.net,silverlight,wcf,.net,Silverlight,Wcf,我有一个连接到WCF服务的Silverlight应用程序 如果我在应用程序开始时打开打开的连接,然后说在客户端调用方法之前给它10分钟左右的时间,它将超时 我知道在web.config中更改超时时间很容易 但是,我希望WCF服务在soap客户端关闭5分钟后保持活动状态。 我想也许在Silverlight中运行一个后台线程,调用一个WCF方法,这个方法什么都不做,但感觉相当粗糙 有没有更专业的方法 谢谢您可以将InstanceContextMode更改为signleton,并在服务构造函数中启动服

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

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

我知道在web.config中更改超时时间很容易

但是,我希望WCF服务在soap客户端关闭5分钟后保持活动状态。 我想也许在Silverlight中运行一个后台线程,调用一个WCF方法,这个方法什么都不做,但感觉相当粗糙

有没有更专业的方法


谢谢

您可以将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个小时,我希望它仍然活跃时,他们回来。