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();
}
// 虽然我将 OpenTimeout 设置为 5 秒,但是当我关闭服务器服务(或关闭 iphone 的 wifi 和网络)时,它仍然尝试在后台连接服务,直到默认的 1 分钟超时,这很奇怪!为什么?谢谢。
顺便说一句,monotouch/iPhone 中的异常在 1 分钟后抛出,类型是 TimeoutException(消息:操作已超时。)而不是 FaultException 或 CommunicationException)。如果上面的代码在 windows .net 客户端中调用,应该会抛出 CommunicationException。