public void CanLazilyResolveClientAssociatedWithChannelUsingSuppliedEndpoint()
{
using (new WindsorContainer()
.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
.Register(Component.For<Operations>()
.DependsOn(new { number = 28 })
.AsWcfService(new DefaultServiceModel()
.AddEndpoints(WcfEndpoint.ForContract<IOperations>()
.BoundTo(new NetTcpBinding { PortSharingEnabled = true })
.At("net.tcp://localhost/Operations2")
)
)))
{
using (var clientContainer = new WindsorContainer()
.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero))
{
var client1 = new WeakReference(clientContainer.Resolve<IOperations>("operations",
new { Endpoint = WcfEndpoint.At("net.tcp://localhost/Operations2") }));
var client2 = clientContainer.Resolve<IOperations>("operations",
new { Endpoint = WcfEndpoint.At("net.tcp://localhost/Operations2") });
Assert.AreEqual(28, ((IOperations)client1.Target).GetValueFromConstructor());
Assert.AreEqual(28, client2.GetValueFromConstructor());
clientContainer.Release(client1.Target);
clientContainer.Release(client2);
System.GC.Collect();
Assert.IsFalse(client1.IsAlive);
}
}
}