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分のタイムアウトまでバックグラウンドでサービスに接続しようとします。これは奇妙なことです。なんで?ありがとう。
ところで、1分後のモノタッチ/ iPhoneスローの例外で、タイプはTimeoutException(メッセージ:操作がタイムアウトしました)であり、FaultExceptionまたはCommunicationExceptionではありません。上記のコードがWindows.netクライアントで呼び出された場合、CommunicationExceptionがスローされます。