在调用某些WCF操作时,我们面临超时问题。
我们没有明确关闭连接。这会导致这个问题吗?现场用户数量非常少,服务器上的maxconcurrentsession设置为150。
我们在客户端有20个调用服务的方法。我们是否需要在所有调用服务的方法上进行以下操作?
如果我们不关闭连接,WCF会自动关闭连接吗?
感谢。
答案 0 :(得分:0)
你应该做4步以上。
如果您没有关闭连接。任何时候服务遇到错误,你都不能在现有连接上调用服务。错误如:
通信对象System.ServiceModel.Channels.ServiceChannel, 不能用于通信,因为它处于Faulted状态。
参考最佳做法:http://www.codeproject.com/Articles/622989/WCF-and-the-Try-Catch-Abort-Pattern
答案 1 :(得分:-1)
WCF服务操作的默认值为sendTimeOut为1分钟。要增加它,您可以在编码或配置中设置此值。
来自here:
SendTimeout - 用于初始化OperationTimeout,它控制发送消息的整个过程,包括接收 回复消息,用于请求/回复服务操作。这个超时也是 从回调合同方法发送回复消息时适用。
OpenTimeout - 在未指定显式超时值时打开通道时使用
- 醇>
CloseTimeout - 在未指定显式超时值时关闭通道时使用
您需要更新客户端以及服务器配置中的值(或者更新服务,然后更新客户端代理),如下所示,这会将所有超时值设置为10分钟。
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding openTimeout="00:10:00"
closeTimeout="00:10:00"
sendTimeout="00:10:00"
receiveTimeout="00:10:00">
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>