IDispatchMessageInspector.BeforeSendReply(Message, Object) Metode

Definisi

Dipanggil setelah operasi kembali tetapi sebelum pesan balasan dikirim.

public void BeforeSendReply (ref System.ServiceModel.Channels.Message reply, object correlationState);

Parameter

reply
Message

Pesan balasan. Nilai ini null jika operasi adalah salah satu cara.

correlationState
Object

Objek korelasi dikembalikan dari metode AfterReceiveRequest(Message, IClientChannel, InstanceContext).

Contoh

Contoh kode berikut menunjukkan IDispatchMessageInspector dasar yang menulis string ke konsol saat dipanggil.

#region IDispatchMessageInspector Members
public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
  Console.WriteLine("IDispatchMessageInspector.AfterReceiveRequest called.");
  return null;
}

public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
  Console.WriteLine("IDispatchMessageInspector.BeforeSendReply called.");
}
#endregion

Contoh kode berikut menunjukkan implementasi IServiceBehavior yang menambahkan InspectorIDispatchMessageInspector ke koleksi DispatchRuntime.MessageInspectors.

#region IServiceBehavior Members
public void AddBindingParameters(
  ServiceDescription serviceDescription,
  ServiceHostBase serviceHostBase,
  System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints,
  BindingParameterCollection bindingParameters
)
{ return; }

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
  foreach (ChannelDispatcher chDisp in serviceHostBase.ChannelDispatchers)
  {
    foreach (EndpointDispatcher epDisp in chDisp.Endpoints)
    {
      epDisp.DispatchRuntime.MessageInspectors.Add(new Inspector());
      foreach (DispatchOperation op in epDisp.DispatchRuntime.Operations)
        op.ParameterInspectors.Add(new Inspector());
    }
  }
}

Contoh kode berikut menunjukkan penggunaan file konfigurasi aplikasi untuk memuat perilaku layanan yang menyisipkan InspectorIDispatchMessageInspector.

<configuration>
  <system.serviceModel>
    <services>
      <service 
        name="Microsoft.WCF.Documentation.SampleService"
        behaviorConfiguration="metadataSupport">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/SampleService" />
          </baseAddresses>
        </host>
        <endpoint
          address=""
          binding="wsHttpBinding"
          contract="Microsoft.WCF.Documentation.ISampleService"
        />
        <endpoint
           address="mex"
           binding="mexHttpBinding"
           contract="IMetadataExchange"
        />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="metadataSupport">
          <serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
          <serviceInterceptors />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <extensions>
      <behaviorExtensions>
        <add 
          name="serviceInterceptors" 
          type="Microsoft.WCF.Documentation.InspectorInserter, HostApplication, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"
        />
      </behaviorExtensions>
    </extensions>
  </system.serviceModel>
</configuration>

Keterangan

Gunakan metode BeforeSendReply untuk melakukan perilaku kustom sebelum mengirim pesan pengembalian. correlationState adalah objek yang dikembalikan dari metode AfterReceiveRequest yang dapat Anda gunakan untuk melakukan korelasi antara panggilan masuk dan keluar untuk mendukung perilaku Anda.

Berlaku untuk

Produk Versi
.NET 8 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1