Ответ 1
Чтобы определить фактический порядок выполнения кода, я бы рекомендовал включить трассировку для WCF и просмотреть созданные журналы трассировки. Это можно включить, добавив это в файл конфигурации:
<configuration>
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
Что касается точек расширения в WCF, Карлос Фигейра (один из инженеров WCF в Microsoft) имеет сообщение, в котором подробно изложены все точки расширяемости в WCF (http://blogs.msdn.com/b/carlosfigueira/archive/2011/03/14/wcf-extensibility.aspx).
В разделе Runtime WCF этого сообщения заказ указан как таковой:
1.2. WCF Runtime
1.2.1. Message interception
1.2.1.1. I[Client/Dispatch]MessageInspector
1.2.1.2. IParameterInspector
1.2.2. Mapping between message and operation parameter
1.2.2.1. I[Client/Dispatch]MessageFormatter
1.2.3. Mapping between message and CLR operations
1.2.3.1. I[Client/Dispatch]OperationSelector
1.2.3.2. IOperationInvoker
1.2.4. Instance creation
1.2.4.1. IInstanceProvider
1.2.4.2. IInstanceContextProvider
1.2.5. Error handling
1.2.5.1. IErrorHandler
1.2.6. Others
1.2.6.1. ICallContextInitializer
1.2.6.2. IChannelInitializer
1.2.6.3. IInteractiveChannelInitializer
Я думаю, что между двумя порядок операций в WCF должен стать ясным.