WCF客户端最佳实践

本文关键字:最佳 客户端 WCF | 更新日期: 2023-09-27 18:00:15

我们在调用某些WCF操作时遇到超时问题。

我们没有明确关闭连接。这会导致问题吗?站点上的用户数量非常少,服务器上的maxconcurrentsession设置为150。

我们在客户端有20个方法来调用该服务。我们需要对所有调用服务的方法执行以下操作吗?

  1. 打开连接
  2. 呼叫服务
  3. 关闭连接
  4. 任何异常中止

如果我们不关闭连接,WCF会自动关闭连接吗?

谢谢。

WCF客户端最佳实践

您应该执行上面的4个步骤。

如果您不关闭连接。任何时候服务遇到错误,您都无法在现有连接上调用服务。错误,例如:

通信对象System.ServiceModel.Channels.ServiceChannel,无法用于通信,因为它处于故障状态。

请参阅最佳实践:http://www.codeproject.com/Articles/622989/WCF-and-the-Try-Catch-Abort-Pattern

WCF服务操作的默认sendTimeOut值为1分钟。要增加它,您可以在编码或配置中设置此值。

从这里:

  1. SendTimeout–用于初始化OperationTimeout,它控制发送消息的整个过程,包括接收请求/回复服务操作的回复消息。此超时也适用于从回调约定方法发送回复消息。

  2. OpenTimeout–在未指定显式超时值的情况下打开通道时使用

  3. 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>