C# WCF,未关闭连接结果超时

C# WCF,未关闭连接结果超时,c#,asp.net,wcf,azure,C#,Asp.net,Wcf,Azure,我们使用asp.net MVC来使用托管在Azure中的WCF中继服务。在登台时工作正常,但当用户尝试续订成员资格时,在生产中会出现以下异常 服务已超过分配的超时时间00:02:00。分配给此操作的时间可能是更长时间的一部分 超时。* System.ServiceModel.FaultException:50400:网关超时* 下面是我们使用的代码片段: Autofac DI: builder.Register(c => new MyServiceClient("BasicHttpRel

我们使用asp.net MVC来使用托管在Azure中的WCF中继服务。在登台时工作正常,但当用户尝试续订成员资格时,在生产中会出现以下异常

  • 服务已超过分配的超时时间00:02:00。分配给此操作的时间可能是更长时间的一部分 超时。*

  • System.ServiceModel.FaultException:50400:网关超时*

  • 下面是我们使用的代码片段:

    Autofac DI:
    
    builder.Register(c => new MyServiceClient("BasicHttpRelayBinding_IMyService")).As<IMyService>();
    
    正如您所看到的,我们并没有显式地关闭服务连接。这是否会导致超时问题

    另外,如果您能帮助我完成以下工作,我会很高兴:

  • WCF是否默认关闭连接
  • 如果连接未关闭,是否会出现其他错误
  • 始终显式关闭WCF连接(通道)是一个好主意,而不是允许其超时,因为从长远来看,这可能会导致各种有趣(且难以诊断)的问题。除非连接超时,否则WCF不会关闭连接本身。另外,请注意,您不能关闭出现故障的通道,它必须被中止。鉴于我们正在使用DI实例化服务,我们如何实现这一点(即关闭通道)?我们还需要显式关闭basicHttpRelay绑定还是只应用于TCP绑定。
    try
                {
                    var response= this.myServiceClient.GetData();                }
                catch (Exception exception)
                {
                    this.loggerService.Error("some log");
                    throw;
                }