Как программно установить параметр leaseTimeout? - PullRequest
0 голосов
/ 12 сентября 2011

У нас есть служба WCF (NetTcpBinding), которая находится за балансировщиком нагрузки. Я прочитал , что во избежание "залипания" я опустил LeaseTime, когда каналы попадают в пул каналов.

Я только нашел примеры того, как установить это значение с помощью файла конфигурации, но я хотел бы установить его программно, любые указатели?

1 Ответ

2 голосов
/ 12 сентября 2011

Вы можете получить доступ к свойству LeaseTimeout через TcpTransportBindingElement, через свойство 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);
...