Partager via


Intercepteurs (WCF Data Services)

Services de données WCF permet à une application d'intercepter des messages de demande afin que vous puissiez ajouter la logique personnalisée à une opération. Vous pouvez utiliser cette logique personnalisée pour valider des données dans les messages entrants. Vous pouvez également l'utiliser pour restreindre davantage l'étendue d'une requête d'interrogation, comme l'insertion d'une stratégie d'autorisation personnalisée sur la base de chaque demande.

L'interception est effectuée par les méthodes attribuées spécialement dans le service de données. Ces méthodes sont appelées par Services de données WCF au point approprié dans le traitement du message. Les intercepteurs sont définis sur une base définie par entité, et les méthodes d'intercepteur ne peuvent pas accepter de paramètres de la demande comme le peuvent les opérations de service. Les méthodes d'intercepteur de requête, appelées lors du traitement d'une demande HTTP GET, doivent retourner une expression lambda qui détermine si une instance du jeu d'entités de l'intercepteur doit être retournée par les résultats de la requête. Cette expression est utilisée par le service de données pour affiner davantage l'opération demandée. L'exemple suivant illustre la définition d'un intercepteur de requête.

' 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()

Pour plus d'informations, consultez Procédure : intercepter des messages de service de données (WCF Data Services).

Les intercepteurs de modification, appelés lors du traitement d'opérations de non-requête, doivent retourner void (Nothing en Visual Basic). Les méthodes d'intercepteur de requête doivent accepter les deux paramètres suivants :

  1. Un paramètre d'un type qui est compatible avec le type d'entité du jeu d'entités. Lorsque le service de données appelle l'intercepteur de modification, la valeur de ce paramètre reflétera les informations d'entité envoyées par la demande.

  2. Un paramètre de type UpdateOperations. Lorsque le service de données appelle l'intercepteur de modification, la valeur de ce paramètre reflétera l'opération que tente d'effectuer la demande.

L'exemple suivant illustre la définition d'un intercepteur de modification.

' 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)

Pour plus d'informations, consultez Procédure : intercepter des messages de service de données (WCF Data Services).

Les attributs suivants sont pris en charge pour l'interception.

  • [QueryInterceptor( EnitySetName )]
    Les méthodes qui appliquent l'attribut QueryInterceptorAttribute sont appelées lorsqu'une demande HTTP GET est reçue pour la ressource de jeu d'entités ciblée. Ces méthodes doivent toujours retourner une expression lambda sous la forme Expression<Func<T,bool>>.
  • [ChangeInterceptor( EnitySetName )]
    Les méthodes qui appliquent l'attribut ChangeInterceptorAttribute sont appelées lorsqu'une demande HTTP différente d'une demande HTTP GET est reçue pour la ressource de jeu d'entités ciblée. Ces méthodes doivent toujours retourner void (Nothing en Visual Basic).

Pour plus d'informations, consultez Procédure : intercepter des messages de service de données (WCF Data Services).

Voir aussi

Concepts

Opérations de service (WCF Data Services)