Share via


Interceptoren (WCF Data Services)

WCF Data Services ermöglicht einer Anwendung das Abfangen von Anforderungsnachrichten, damit einem Vorgang benutzerdefinierte Logik hinzugefügt werden kann. Sie können Daten in eingehenden Nachrichten mithilfe dieser benutzerdefinierten Logik überprüfen. Sie können damit außerdem den Bereich einer Abfrageanforderung weiter einschränken, z. B. um eine benutzerdefinierte Autorisierungsrichtlinie für jede Anforderung einzufügen.

Das Abfangen wird von speziell attributierten Methoden im Datendienst ausgeführt. Diese Methoden werden von WCF Data Services zum entsprechenden Zeitpunkt während der Nachrichtenverarbeitung aufgerufen. Interceptoren werden für jede Entitätenmenge definiert, und Interceptormethoden können im Gegensatz zu Dienstvorgängen keine Parameter aus der Anforderung akzeptieren. Abfrage-Interceptor-Methoden, die beim Verarbeiten einer HTTP GET-Anforderung aufgerufen werden, müssen einen Lambda-Ausdruck zurückgeben, der bestimmt, ob eine Instanz der Entitätenmenge des Interceptors von den Abfrageergebnissen zurückgegeben werden soll. Dieser Ausdruck wird vom Datendienst verwendet, um den angeforderten Vorgang weiter zu optimieren. Nachfolgend wird eine Beispieldefinition eines Abfrage-Interceptors dargestellt.

' Define a query interceptor for the Orders entity set.
<QueryInterceptor("Orders")> _
Public Function OnQueryOrders() As Expression(Of Func(Of Order, Boolean))
// Define a query interceptor for the Orders entity set.
[QueryInterceptor("Orders")]
public Expression<Func<Order, bool>> OnQueryOrders()

Weitere Informationen finden Sie unter Gewusst wie: Abfangen von Datendienstnachrichten (WCF Data Services).

Change-Interceptoren, die beim Verarbeiten von Nicht-Abfragevorgängen aufgerufen werden, müssen void (Nothing in Visual Basic) zurückgeben. Change-Interceptor-Methoden müssen die folgenden beiden Parameter akzeptieren:

  1. Ein Parameter eines Typs, der mit dem Entitätstyp der Entitätenmenge kompatibel ist. Wenn der Datendienst den Change-Interceptor aufruft, spiegelt der Wert dieses Parameters die von der Anforderung gesendeten Entitätsinformationen wider.

  2. Ein Parameter vom Typ UpdateOperations. Wenn der Datendienst den Change-Interceptor aufruft, spiegelt der Wert dieses Parameters den Vorgang wider, den die Anforderung auszuführen versucht.

Nachfolgend wird eine Beispieldefinition eines Change-Interceptors dargestellt.

' Define a change interceptor for the Products entity set.
<ChangeInterceptor("Products")> _
Public Sub OnChangeProducts(ByVal product As Product, _
                            ByVal operations As UpdateOperations)
// Define a change interceptor for the Products entity set.
[ChangeInterceptor("Products")]
public void OnChangeProducts(Product product, UpdateOperations operations)

Weitere Informationen finden Sie unter Gewusst wie: Abfangen von Datendienstnachrichten (WCF Data Services).

Die folgenden Attribute werden für das Abfangen unterstützt.

  • [QueryInterceptor( EntitySetName )]
    Methoden mit angewendetem QueryInterceptorAttribute-Attribut werden aufgerufen, wenn eine HTTP GET-Anforderung für die Ziel-Entitätenmengenressource empfangen wird. Diese Methoden müssen immer einen Lambda-Ausdruck in Form von Expression<Func<T,bool>> zurückgeben.
  • [ChangeInterceptor( EntitySetName )]
    Methoden mit angewendetem ChangeInterceptorAttribute-Attribut werden aufgerufen, wenn eine andere HTTP-Anforderung als eine HTTP GET-Anforderung für die Ziel-Entitätenmengenressource empfangen wird. Diese Methoden müssen immer void (Nothing in Visual Basic) zurückgeben.

Weitere Informationen finden Sie unter Gewusst wie: Abfangen von Datendienstnachrichten (WCF Data Services).

Siehe auch

Konzepte

Dienstvorgänge (WCF Data Services)