Channel Close Trigger Strategies
When an exception occurs while calling the service operation, the
ServiceConsumer follows a specific strategy to determine whether the exception and/or current channel state is severe enough to necessitate and trigger the closing/aborting of the service channel.
These “Service Channel Close Trigger Strategies” are an implementation of the interface
IServiceChannelCloseTriggerStrategy. There is one method in this interface:
1bool ShouldCloseChannel(ICommunicationObject channel, Exception exception);
If the method
true, then the
ServiceConsumer will perform the Close/Abort pattern.
The Out-Of-The-Box Strategy
Out of the box, the
DefaultServiceChannelCloseTriggerStrategy is used. This strategy is very simple, effective and safe. It triggers a close to occur if the exception is anything but a
FaultException, regardless of the state of the service channel. It is highly probable that the channel is no longer usable in the case where there was any other type of exception.
Use Your Own
If you find that this strategy does not suit your need, you can create your own class that implements that interface and specify your class as one of the overloads of the
Create method on the
ServiceConsumerFactory. Alternatively, you can directly set the property
ChannelCloseTriggerStrategy on the
ServiceConsumer instance itself.