WCF客户端最佳实践
本文关键字:最佳 客户端 WCF | 更新日期: 2023-09-27 18:00:15
我们在调用某些WCF操作时遇到超时问题。
我们没有明确关闭连接。这会导致问题吗?站点上的用户数量非常少,服务器上的maxconcurrentsession设置为150。
我们在客户端有20个方法来调用该服务。我们需要对所有调用服务的方法执行以下操作吗?
- 打开连接
- 呼叫服务
- 关闭连接
- 任何异常中止
如果我们不关闭连接,WCF会自动关闭连接吗?
谢谢。
您应该执行上面的4个步骤。
如果您不关闭连接。任何时候服务遇到错误,您都无法在现有连接上调用服务。错误,例如:
通信对象System.ServiceModel.Channels.ServiceChannel,无法用于通信,因为它处于故障状态。
请参阅最佳实践:http://www.codeproject.com/Articles/622989/WCF-and-the-Try-Catch-Abort-Pattern
从这里:
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>