public void CanRecoverFromCommunicationExceptionOnEndpoint()
{
Func<IWindsorContainer> createLocalContainer = () =>
new WindsorContainer()
.AddFacility<WcfFacility>(f => f.CloseTimeout = TimeSpan.Zero)
.Register(
Component.For<Operations>()
.DependsOn(new { number = 42 })
.AsWcfService(new DefaultServiceModel().AddEndpoints(
WcfEndpoint.ForContract<IOperations>()
.BoundTo(new NetTcpBinding { PortSharingEnabled = true })
.At("net.tcp://localhost/Operations1"),
WcfEndpoint.ForContract<IOperationsEx>()
.BoundTo(new NetTcpBinding { PortSharingEnabled = true })
.At("net.tcp://localhost/Operations1/Ex")
)
)
);
windsorContainer.Register(
Component.For<IOperationsEx>()
.Named("operations")
.AsWcfClient(WcfEndpoint
.BoundTo(new NetTcpBinding { PortSharingEnabled = true })
.At("net.tcp://localhost/Operations1/Ex")
.AddExtensions(new RepairChannelPolicy())));
IOperationsEx client;
using (createLocalContainer())
{
client = windsorContainer.Resolve<IOperationsEx>("operations");
client.Backup(new Dictionary<string, object>());
}
using (createLocalContainer())
{
client.Backup(new Dictionary<string, object>());
}
}