我的问题有一定的背景知识,但是在此之前,这是我的问题:当我的服务实例模式设置为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()
,连接限制本身似乎都在请求完成后关闭。