MonoTouch的/ WCF:为什么不能覆盖的WCF结合超时设置(Monotouch/WCF: w

2019-09-16 10:19发布

MonoTouch的/ WCF:为什么不能覆盖WCF绑定默认的超时设置:

public class MyServiceClient : ClientBase<IMyContract>,IMyContract
{ ... }

public void test() {
        BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
        basicHttpBinding.Name = "basicHttpBinding";
        basicHttpBinding.MaxBufferSize = int.MaxValue;
        basicHttpBinding.MaxReceivedMessageSize = int.MaxValue;
        basicHttpBinding.ReceiveTimeout = TimeSpan.FromSeconds(10.0);
        basicHttpBinding.SendTimeout = TimeSpan.FromSeconds(10.0);
        basicHttpBinding.CloseTimeout = TimeSpan.FromSeconds(5.0);
        basicHttpBinding.OpenTimeout = TimeSpan.FromSeconds(5.0);

       MyServiceClient client = New MyServiceClient(basicHttpBinding, new EndPointAddress(...));
       client.Test();
     }

// Althought我设置OpenTimeout为5秒,但是当我关闭服务器服务(或关闭iPhone的WiFi和网络),它仍然会尝试连接到服务后台,直到默认的1 miniute超时,真奇怪! 为什么? 谢谢。

顺便说一句,在MonoTouch的/ iPhone罚1分钟后的例外,类型是TimeoutException异常(消息:操作已经超时。)不是FaultException异常或的CommunicationException)。 如果上面的代码在Windows .NET客户端调用,它应该是扔的CommunicationException。

Answer 1:

xamarin团队回复:serviceClient.innerchannel.operationtimeout = ...谢谢。



文章来源: Monotouch/WCF: why cannot override the wcf binding timeout setting