2011-09-12 30 views
0

ロードバランサの背後にあるWCFサービス(NetTcpBinding)があります。 I've read "スティッキーニス"を避けるために、私はLeaseTimeのチャンネルをチャンネルプールに入れます。leaseTimeout設定をプログラム的に設定する方法は?

私は設定ファイルを使ってこの値を設定する方法しか見つけられませんでしたが、私はそれをprogrammaticalyのポインタに設定したいのですか?

答えて

2

あなたはConnectionPoolSettingsプロパティを介して、TcpTransportBindingElement経由LeaseTimeoutプロパティにアクセスすることができます

TcpTransportBindingElement tcpBE = new TcpTransportBindingElement(); 
tcpBE.ConnectionPoolSettings.LeaseTimeout = TimeSpan.FromSeconds(1); 

をあなたがNetTcpBindingオブジェクトを持っている場合は、第一の結合要素にアクセスする、その後、CustomBindingに変換する必要があります。以下の例は、これを行う方法の1つを示しています。

NetTcpBinding myOriginalBinding = CreateBinding(); 
CustomBinding newBinding = new CustomBinding(myOriginalBinding); 
TcpTransportBindingElement tcpBE = newBinding.Elements.Find<TcpTransportBindingElement>(); 
tcpBE.ConnectionPoolSettings.LeaseTimeout = TimeSpan.FromSeconds(1); 
+0

これはアプリ全体の設定に適用されますか?私はこのクラスを私のバインディング/チャンネルなどに付ける必要はありませんか? – Gidon

+0

'netTcpBinding'をカスタムバインディングに変換し、' TcpTransportBindingElement'に直接アクセスする必要があります。私はより多くの情報で答えを更新しました。 – carlosfigueira

+0

すばらしい、例のおかげで! – Gidon

関連する問題