Interceptores (WCF Data Services)

Servicios de datos de Microsoft WCF permite que una aplicación intercepte los mensajes de solicitud para permitir agregar una lógica personalizada a una operación. Puede utilizar esta lógica personalizada para validar los datos de los mensajes entrantes. También puede utilizarla como restricción adicional del ámbito de una solicitud de consulta, por ejemplo, para insertar una directiva de autorización personalizada por solicitud.

Métodos con atributos especiales realizan la interceptación en el servicio de datos. Servicios de datos de Microsoft WCF llama a estos métodos en el punto adecuado del procesamiento de mensajes. Los interceptores se definen por entidad. Los métodos de interceptor no pueden aceptar los parámetros de la solicitud, como sí pueden las operaciones del servicio. Los métodos de interceptor de consulta, a los que se llama al procesar una solicitud GET de HTTP, deben devolver una expresión lambda que determina si los resultados de la consulta deben devolver una instancia del conjunto de entidades del interceptor. El servicio de datos utiliza esta expresión para perfeccionar más la operación solicitada. El ejemplo siguiente muestra una definición de un interceptor de consulta.

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

Para obtener más información, vea Cómo: Interceptar mensajes del servicio de datos (WCF Data Services).

Los interceptores de cambio, a los que se llama al procesar las operaciones que no son de consulta, deben devolver void (Nothing en Visual Basic). Los métodos de interceptor de cambio deben aceptar los dos siguientes parámetros:

  1. Un parámetro de un tipo que es compatible con el tipo de entidad del conjunto de entidades. Cuando el servicio de datos llama al interceptor de cambio, el valor de este parámetro refleja la información de la entidad que envía la solicitud.

  2. Un parámetro de tipo UpdateOperations. Cuando el servicio de datos llama al interceptor de cambio, el valor de este parámetro refleja la operación que la solicitud intenta realizar.

El ejemplo siguiente muestra una definición de un interceptor de cambio.

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

Para obtener más información, vea Cómo: Interceptar mensajes del servicio de datos (WCF Data Services).

La interceptación admite los siguientes atributos.

  • [QueryInterceptor( EnitySetName )]
    Se llama a los métodos que tienen aplicado el atributo QueryInterceptorAttribute cuando se recibe una solicitud GET de HTTP para el recurso de conjunto de entidades concreto. Estos métodos siempre deben devolver una expresión lambda en el formulario de Expression<Func<T,bool>>.

  • [ChangeInterceptor( EnitySetName )]
    Se llama a los métodos que tienen aplicado el atributo ChangeInterceptorAttribute cuando se recibe una solicitud HTTP distinta de GET para el recurso de conjunto de entidades concreto. Estos métodos siempre deben devolver void (Nothing en Visual Basic).

Para obtener más información, vea Cómo: Interceptar mensajes del servicio de datos (WCF Data Services).

Vea también

Conceptos

Operaciones de servicio (WCF Data Services)