WCF服务代理在关闭时超时

WCF服务代理在关闭时超时,wcf,.net-3.5,timeout,Wcf,.net 3.5,Timeout,我有一个WCF客户端应用程序,它为每个调用创建一个新的代理实例。我对上一个实例调用Close()以确保连接已关闭,但它总是在1分钟后超时,这是默认的关闭时间。我以前在本例中调用了Abort(),而不是Close(),但后来我意识到我将超过默认的10个并发连接的限制。我不确定是什么原因导致Close()调用超时。查看WCF跟踪日志,我看到一部分日志显示以下内容,但我不清楚这是否是我调用Close()或自动执行此操作的结果: 留言被关闭了 留言被关闭了 消息再次关闭 我的服务定义了以下行为: [

我有一个WCF客户端应用程序,它为每个调用创建一个新的代理实例。我对上一个实例调用Close()以确保连接已关闭,但它总是在1分钟后超时,这是默认的关闭时间。我以前在本例中调用了Abort(),而不是Close(),但后来我意识到我将超过默认的10个并发连接的限制。我不确定是什么原因导致Close()调用超时。查看WCF跟踪日志,我看到一部分日志显示以下内容,但我不清楚这是否是我调用Close()或自动执行此操作的结果:

  • 留言被关闭了
  • 留言被关闭了
  • 消息再次关闭
我的服务定义了以下行为:

[ServiceBehavior(IncludeExceptionDetailInFaults = true, AutomaticSessionShutdown = false, InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
以下是我的服务行为:

  <service behaviorConfiguration="AdminServiceBehavior" name="My.WebServices.AdminService">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="AdminUserNameBinding"
      name="wsHttpBindingWithAuthAdmin" contract="My.WebServices.IAdminService">
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" name="mexAdminBinding"
      contract="IMetadataExchange" />

我需要做什么才能优雅地关闭()连接而不超时?我读过关于何时调用Close()和Abort()以及是否应该处置/使用“using”块的文章,但Close()在我身上超时和Abort()并没有释放并发会话的事实让我感到困惑

这可能与有关,但我不确定为什么会导致Close()中止。老实说,我不知道为什么我将该属性设置为false

更新:将AutomaticsSessionShutdown设置为true(默认值),允许我调用Close(),而无需超时。这似乎有效,但我不知道为什么