IDispatchMessageInspector.BeforeSendReply(Message, Object) Méthode

Définition

Appelé une fois l’opération retournée, mais avant l’envoi du message de réponse.

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

Paramètres

reply
Message

Message de réponse. Cette valeur est Null si l’opération est unidirectionnelle.

correlationState
Object

Objet de corrélation retourné par la méthode AfterReceiveRequest(Message, IClientChannel, InstanceContext).

Exemples

L’exemple de code suivant montre une IDispatchMessageInspector de base qui écrit une chaîne dans la console lorsqu’elle est appelée.

#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

L’exemple de code suivant montre l’implémentation d’un IServiceBehavior qui ajoute la InspectorIDispatchMessageInspector à la collection 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());
    }
  }
}

L’exemple de code suivant montre l’utilisation d’un fichier de configuration d’application pour charger le comportement du service qui insère le 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>

Remarques

Utilisez la méthode BeforeSendReply pour effectuer un comportement personnalisé avant d’envoyer le message de retour. L'correlationState est l’objet retourné par la méthode AfterReceiveRequest que vous pouvez utiliser pour effectuer une corrélation entre les appels entrants et sortants pour prendre en charge votre comportement.

S’applique à

Produit Versions
.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