Make a custom binding which either exposes the ChannelInitializationTimeout
as a binding property, or sets it when it is instantiated, for instance like this:
public class CustomNamedPipeBinding : CustomBinding
{
public CustomNamedPipeBinding(TimeSpan initTimeout) : base()
{
NetNamedPipeBinding standardBinding = new NetNamedPipeBinding();
foreach (BindingElement element in standardBinding.CreateBindingElements())
{
NamedPipeTransportBindingElement transportElement = element as NamedPipeTransportBindingElement;
if (null != transportElement)
{
transportElement.ChannelInitializationTimeout = initTimeout;
}
base.Elements.Add(element);
}
}
}