public void CanRecoverFromCommunicationExceptionAsynchronously()
{
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(new DefaultClientModel()
{
Endpoint = WcfEndpoint
.BoundTo(new NetTcpBinding { PortSharingEnabled = true })
.At("net.tcp://localhost/Operations1/Ex")
})
);
IOperationsEx client = null;
using (createLocalContainer())
{
client = windsorContainer.Resolve<IOperationsEx>("operations");
client.BeginWcfCall(p => p.Backup(new Dictionary<string, object>())).End();
}
using (createLocalContainer())
{
client.BeginWcfCall(p => p.Backup(new Dictionary<string, object>())).End();
}
}