带有WCF的Xamarin有一个超时错误

时间:2017-11-21 21:57:16

标签: wcf xamarin timeout

我的应用程序使用WCF从服务器和应用程序传输数据。它一直运行良好。但是最近,如果应用程序在一段时间后没有运行,则总会抛出超时异常。当抛出超时异常时, winform应用程序可以正常调用WCF。如果重新启动调试,应用程序可以再次调用WCF;过一会儿,它会再次抛出超时异常。我能为此做些什么?

我的代码是这样的:

 // CreateBinding
  private static BasicHttpBinding CreateBasicHttp()
    {
        BasicHttpBinding binding = new BasicHttpBinding
        {
            Name = "basicHttpBinding",
            MaxBufferSize = 2147483647,
            MaxReceivedMessageSize = 2147483647
        };
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None;
        TimeSpan timeout = new TimeSpan(0, 0, 30);
        binding.SendTimeout = timeout;
        binding.OpenTimeout = timeout;
        binding.ReceiveTimeout = timeout;
        return binding;
    }

 // Create Endpoint

    private static EndpointAddress CreateEndPoint(string serviceName)
    {
        string serviceUrl = App.RemoteUrl + serviceName + ".svc";


        EndpointAddress EndPoint = new EndpointAddress(serviceUrl);
        return EndPoint;
    }   

 // Create binder
 public static WCFBinder GetBinder<T>()
    {
        WCFBinder binder;
        Type t = typeof(T);
        string serviceName = t.Name.Substring(1, t.Name.Length - 1);
        binder.Binding = CreateBasicHttp();
        binder.EndPoint = CreateEndPoint(serviceName);
        return binder;
    }

  // Create a client
  var binder = SDHCommonMethod.GetBinder<IAAA001BLLService>();

  IAAA001BLLService asc = new AAA001BLLServiceClient(binder.Binding, binder.EndPoint);

  // Call WCF
  var obj = await Task.Factory.FromAsync(asc.BeginSelectAAA001, asc.EndSelectAAA001, dto, TaskCreationOptions.None);

0 个答案:

没有答案