方法 : クライアントのメッセージを検査または変更する

System.ServiceModel.Dispatcher.IClientMessageInspector を実装し、それをクライアントのランタイムに追加することで、WCF クライアントの送受信メッセージを検査または変更できます。詳細については、「クライアントの拡張」を参照してください。サービスの同等の機能は、System.ServiceModel.Dispatcher.IDispatchMessageInspector です。

メッセージを検査または変更するには

  1. System.ServiceModel.Dispatcher.IClientMessageInspector インターフェイスを実装します。

  2. クライアント メッセージ インスペクターを容易に挿入したいスコープによって、System.ServiceModel.Description.IEndpointBehavior または System.ServiceModel.Description.IContractBehavior を実装します。

  3. System.ServiceModel.ChannelFactorySystem.ServiceModel.ICommunicationObject.Open メソッドまたは System.ServiceModel.ClientBase.Open を呼び出す前に、動作を追加します。詳細については、「動作を使用したランタイムの構成と拡張」を参照してください。

下のコード例では、次の項目を順番に示しています。

  • クライアント インスペクター実装

  • インスペクターを挿入するエンドポイント動作

  • クライアント アプリケーションに動作を読み込んで実行する構成ファイル

#Region "IClientMessageInspector Members"
Public Sub AfterReceiveReply(ByRef reply As System.ServiceModel.Channels.Message, ByVal correlationState As Object) Implements IClientMessageInspector.AfterReceiveReply
  Console.WriteLine("IClientMessageInspector.AfterReceiveReply called.")
  Console.WriteLine("Message: {0}", reply.ToString())
End Sub

Public Function BeforeSendRequest(ByRef request As System.ServiceModel.Channels.Message, ByVal channel As IClientChannel) As Object Implements IClientMessageInspector.BeforeSendRequest
  Console.WriteLine("IClientMessageInspector.BeforeSendRequest called.")
  Return Nothing
End Function
#Region "IEndpointBehavior Members"
Public Sub AddBindingParameters(ByVal endpoint As ServiceEndpoint, ByVal bindingParameters As BindingParameterCollection) Implements IEndpointBehavior.AddBindingParameters
    Return
End Sub

Public Sub ApplyClientBehavior(ByVal endpoint As ServiceEndpoint, ByVal clientRuntime As ClientRuntime) Implements IEndpointBehavior.ApplyClientBehavior
  clientRuntime.MessageInspectors.Add(New Inspector())
End Sub

Public Sub ApplyDispatchBehavior(ByVal endpoint As ServiceEndpoint, ByVal endpointDispatcher As EndpointDispatcher) Implements IEndpointBehavior.ApplyDispatchBehavior
  endpointDispatcher.DispatchRuntime.MessageInspectors.Add(New Inspector())
End Sub

Public Sub Validate(ByVal endpoint As ServiceEndpoint) Implements IEndpointBehavior.Validate
    Return
End Sub
  <client>
      <endpoint 
        address="https://localhost:8080/SampleService" 
        behaviorConfiguration="clientInspectorsAdded" 
        binding="wsHttpBinding"
        bindingConfiguration="WSHttpBinding_ISampleService" 
        contract="ISampleService"
        name="WSHttpBinding_ISampleService"
      >
      </endpoint>
  </client>
<behaviors>
  <endpointBehaviors>
    <behavior name="clientInspectorsAdded">
      <clientInterceptors />
    </behavior>
  </endpointBehaviors>
</behaviors>
<extensions>
  <behaviorExtensions>
    <add 
      name="clientInterceptors" 
      type="Microsoft.WCF.Documentation.InspectorInserter, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
  />
  </behaviorExtensions>
</extensions>

参照

リファレンス

System.ServiceModel.Dispatcher.IClientMessageInspector
System.ServiceModel.Dispatcher.IDispatchMessageInspector

概念

動作を使用したランタイムの構成と拡張