Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

IDispatchMessageInspector-Schnittstelle

 

Definiert die Methoden, die eine benutzerdefinierte Überprüfung oder Änderung von eingehenden und ausgehenden Anwendungsnachrichten in Dienstanwendungen ermöglichen.

Namespace:   System.ServiceModel.Dispatcher
Assembly:  System.ServiceModel (in System.ServiceModel.dll)

public interface IDispatchMessageInspector

NameBeschreibung
System_CAPS_pubmethodAfterReceiveRequest(Message, IClientChannel, InstanceContext)

Wird aufgerufen, nachdem eine eingehende Nachricht empfangen wurde, jedoch bevor die Nachricht an den beabsichtigten Vorgang weitergeleitet wird.

System_CAPS_pubmethodBeforeSendReply(Message, Object)

Wird aufgerufen, nachdem der Vorgang zurückgegeben wurde, jedoch bevor die Antwortnachricht gesendet wird.

Implementieren Sie IDispatchMessageInspector, um eingehende und ausgehende Anwendungsnachrichten vor dem Weiterleiten einer Anforderungsnachricht an einen Vorgang oder vor dem Zurückgeben einer Antwortnachricht an einen Aufrufer zu überprüfen oder zu ändern. Es gibt eine große Anzahl von Szenarios, in denen das Abfangen von Nachrichten vor dem Aufrufen des Vorgangs erforderlich ist, für den diese bestimmt sind. Beispielsweise können Sie eingehende Anwendungsnachrichten protokollieren oder eine Funktion auf der Basis eines Nachrichtenheaders ausführen.

In der Regel werden Nachrichteninspektoren durch ein Dienstverhalten (System.ServiceModel.Description.IServiceBehavior), ein Endpunktverhalten (System.ServiceModel.Description.IEndpointBehavior) oder ein Vertragsverhalten (System.ServiceModel.Description.IContractBehavior) eingefügt. Das Verhalten fügt dann den Nachrichteninspektor der DispatchRuntime.MessageInspectors-Auflistung hinzu. Weitere Informationen zur Ausdehnung der Laufzeit mithilfe von Verhaltensweisen finden Sie unter Erweitern von ServiceHost und der Dienstmodellebene.

  • Die AfterReceiveRequest-Methode aktiviert benutzerdefiniertes Verhalten, nachdem die Nachricht eingegangen ist, jedoch bevor sie an den beabsichtigten Vorgang gesendet wird.

  • Die BeforeSendReply-Methode aktiviert benutzerdefiniertes Verhalten, nachdem der Vorgang zurückgegeben wurde, jedoch bevor die Antwort gesendet wird.

System_CAPS_noteHinweis

IDispatchMessageInspector-Objekte werden immer am selben Punkt während des Sendens von Nachrichten aufgerufen, unabhängig davon, ob es sich um einen unidirektionalen oder einen Anforderung/Antwort-Vorgang handelt.

Im folgenden Codebeispiel wird ein grundlegender IDispatchMessageInspector veranschaulicht, der eine Zeichenfolge in der Konsole ausgibt, wenn er aufgerufen wird.

#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

Das folgende Codebeispiel zeigt die Implementierung von einer IServiceBehavior addiert der InspectorIDispatchMessageInspector an der DispatchRuntime.MessageInspectors Auflistung.

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

Das folgende Codebeispiel zeigt die Verwendung der Konfigurationsdatei einer Anwendung das Dienstverhalten zu laden, die fügt die InspectorIDispatchMessageInspector.

.NET Framework
Verfügbar seit 3.0
Zurück zum Anfang
Anzeigen: