在 InternalInvoke 中,透過 SetEnvoyAndChannelSinks 將 channelSink 串接至 RemotingProxy 的 identity._channelSink,形成可被代理存取的鏈結。

RemotingProxy.CallProcessMessage(identity.ChannelSink, reqMsg, ...) 將訊息交給第一個 IMessageSink 處理。雖由 IClientChannelSinkProvider 建立,但鏈頭實為 IMessageSink,故 SoapClientFormatterSink(實作 IMessageSink)可正常運作。
<formatter ref="soap"/> 之前,才能在格式化前攔截訊息。<channel ref="http">
<clientProviders>
<provider type="CustomSinks.CustomSinkProvider,CustomSinks" />
<formatter ref="soap" />
</clientProviders>
</channel>
利用 IClientChannelSinkProvider 插入 IMessageSink,可在訊息序列化前攔截修改,實現強大的 AOP 風格擴充。下一節將探討同一 AppDomain 內的攔截機制。