WCF服务-按呼叫模式|我必须致电.Close()吗?

时间:2018-07-06 20:32:37

标签: wcf concurrency wcf-client wcf-proxy

我的问题有一定的背景知识,但是在此之前,这是我的问题:当我的服务实例模式设置为clientProxy.Close()且我们正在使用时,是否需要调用Per Call basicHttpBinding

在遇到生产应用程序偶尔出现超时问题(客户端)后,过去三天中,我在WCF服务上读取了过多的信息。根据我的想法,它与并发有关。我相信我们一次最多只能有10个开放连接。我们正在IIS中托管-不管我在web.config中放什么内容,我似乎都无法一次获得10个以上的连接。

对于测试,我编写了一个测试应用程序,当我单击按钮时会执行以下操作:

Button_Click(object sender, RoutedEventArgs e){
     for (int i = 0; i < 11; i++) {
          HandleRequest();
     }
}

private async Task HandleRequest() {
     try{
          var proxy = new clientProxy();
          await proxy.DoWork();
     } 
     catch (Exception e){
          MessageBox.Show(e.Message);
     }
}

基本上,我要模仿的是应用程序同时触发请求的不同实例。我看到的是创建10个实例,然后一旦连接可用,就会处理上一个请求。奇怪的是,我根本没有关闭连接。请求完成后,实例将关闭。 如果是这样 ,那我给.Close()打个电话有什么意义?

其他信息: 所有这些源于我调试超时问题。在我的仪表板WPF应用程序中,我全局实例化clientProxy,并根据需要重新使用它,因为它将每分钟使用多次,因此关闭并每分钟重新实例化很多次似乎是错误的。 (如果我听起来疯了,请告诉我)。我开始研究可能开始关闭并重新打开它们的方式,就像每个人都说的那样,直到我发现无论请求是否调用.Close(),连接限制本身似乎都在请求完成后关闭。

0 个答案:

没有答案
相关问题