Číst v angličtině

Sdílet prostřednictvím


IDispatchMessageInspector.BeforeSendReply(Message, Object) Metoda

Definice

Volá se po vrácení operace, ale před odesláním zprávy odpovědi.

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

Parametry

reply
Message

Zpráva odpovědi. Tato hodnota má hodnotu null, pokud je operace jedním ze způsobů.

correlationState
Object

Objekt korelace vrácený z AfterReceiveRequest(Message, IClientChannel, InstanceContext) metody.

Příklady

Následující příklad kódu ukazuje základní IDispatchMessageInspector, který při vyvolání zapíše řetězec do konzoly.

C#
#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

Následující příklad kódu ukazuje implementaci IServiceBehavior, která přidá InspectorIDispatchMessageInspector do kolekce DispatchRuntime.MessageInspectors.

C#
#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());
    }
  }
}

Následující příklad kódu ukazuje použití konfiguračního souboru aplikace k načtení chování služby, které vloží InspectorIDispatchMessageInspector.

XML
<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>

Poznámky

Použijte BeforeSendReply metodu k provedení vlastního chování před odesláním návratové zprávy. correlationState je objekt vrácený metodou AfterReceiveRequest, kterou můžete použít k provádění korelace mezi příchozími a odchozími voláními pro podporu vašeho chování.

Platí pro

Produkt Verze
.NET 8 (package-provided), 9 (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 (package-provided), 4.7, 4.7.1 (package-provided), 4.7.1, 4.7.2 (package-provided), 4.7.2, 4.8 (package-provided), 4.8, 4.8.1
.NET Standard 2.0 (package-provided)