我有一个自托管在WPF应用程序中的服务。我也有一个WPF客户端和一个Xamarin android客户端,它们使用WCF客户端来使用该服务。
我已经意识到我可以从WPF客户端正常调用,但是从android客户端只能调用2次,之后应用程序停止响应,并且一段时间后,我收到了超时异常。
我读过一些线程,说我必须关闭客户端代理才能解决问题,因为服务器中的连接数有限,但这不能解决问题。实际上,在这两种情况下,我都尝试不关闭WPF应用程序中的代理并且没有问题,并且尝试关闭android应用程序中的代理,最后尝试使用try / catch和using块。该应用程序停止响应。
我在this和this之类的线程中尝试解决方案,但是它们不能解决我的问题。
代码如下:
WPF客户端:
int _numeroLlamadas = 0;
GestorAplicacionesServiceProxy _proxy = new GestorAplicacionesServiceProxy();
private void BtnTest_Click(object sender, RoutedEventArgs e)
{
txtResultado.Text = _proxy.GetData(2);
_numeroLlamadas = _numeroLlamadas + 1;
txtNumeroLlamadas.Text = _numeroLlamadas.ToString();
}
在这种情况下,我有一个柜台来知道可以调用多少次该服务,而调用20、30、40 ...次也没有问题。
在android应用程序中,按钮的click事件中包含以下代码:
using (GestorAplicacionesServiceProxy miProxy = new GestorAplicacionesServiceProxy(_binding, _endPointAddress))
{
string miResultado = miProxy.GetData(2);
Toast.MakeText(this, "Hola", ToastLength.Short).Show();
}
在这种情况下,我在使用完代理后使用using块来处理代理。但是我只能调用2次,在下一次调用中,应用程序将引发超时异常。
服务,实例上下文模式是每次调用。
WPF客户端如何正常工作,而android应用程序却不是,我在想这也许是因为android应用程序有不同的考虑因素。
谢谢。