2009-02-27 24 views
2

私は、クライアントがサーバーに加入し、サーバーがクライアントにデータをプッシュするWCFを使用して、ほとんどの作業コードを書いています。WCFのコールバックのreceiveTimeoutを設定していますか?

私はしばらくの間実行していて、クライアントにデータをプルしようとしましたが、receiveTimeoutプロパティを設定しなければならないという例外がありました。

このプロパティはどこで設定できますか?どこでも、この問題は、svcutil.exeを使用してWCFコードが生成されているように見えることがわかります。これをやっていないし、最初からやり直したいとは思っていません。

答えて

3

私はこれを行う方法を見つけました。パイプクライアント側を作成するときは、バインディングのタイムアウトを明示的に設定する必要があります。

NetNamedPipeBinding binding = new NetNamedPipeBinding(); 
binding.ReceiveTimeout = new TimeSpan(1,0,0); 
binding.SendTimeout = new TimeSpan(1,0,0); 
DuplexChannelFactory<IVdnServer> pipeFactory = new 
    DuplexChannelFactory<IVdnServer>(_subscriber, binding, 
     new EndpointAddress("net.pipe://localhost/PipeService")); 

サービスエンドポイントサーバー側を作成するときには、明示的にタイムアウトを設定する必要があります。

NetNamedPipeBinding binding = new NetNamedPipeBinding(); 
binding.ReceiveTimeout = new TimeSpan(1,0,0); 
binding.SendTimeout = new TimeSpan(1,0,0); 

_host.AddServiceEndpoint(typeof(IVdnServer),binding , "PipeReverse"); 
関連する問題