2011-09-12 37 views
0

我們有一個位於負載均衡器後面的WCF服務(NetTcpBinding)。 I've read,爲了避免「stickyniss」,我已經降低了頻道獲取頻道池中的LeaseTime如何設置leaseTimeout設置programmaticaly?

我只找到了示例如何使用配置文件來設置此值,但我想設置它programmaticaly,任何指針?

回答

2

您可以通過TcpTransportBindingElement訪問LeaseTimeout屬性,通過ConnectionPoolSettings屬性:

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

如果你有NetTcpBinding對象,則需要先將其轉換爲CustomBinding,然後訪問綁定元素。下面的例子顯示了一個這樣做的方法。

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