2010-03-18 8 views
12

Actualmente estoy trabajando en un servicio WCF que llega a otro servicio para enviar información en algunas de sus operaciones. El proxy para el segundo servicio se genera a través de la clase fuertemente tipada ProxyFactory<T>. No he experimentado ningún problema, pero he oído que debería hacer algo como lo siguiente al hacer la llamada:¿Cuándo debería usar OperationContextScope dentro de un servicio WCF?

using (new OperationContextScope((IContextChannel)_service)) 
    _service.Send(message); 

Así que mi pregunta es: ¿Cuándo es la creación de esta nueva OperationContextScope apropiada, y por qué?

Gracias!

Respuesta

14

Si está utilizando devoluciones de llamada o si desea modificar el mensaje o los encabezados, entonces necesita usar OperationContextScope. Su servicio podría necesitar modificar los encabezados salientes mientras llama a ese otro servicio.

Al establecer OperationContextScope entonces usted puede:

  1. acceso y modificar encabezados de los mensajes entrantes y salientes y otras propiedades.
  2. Acceda al tiempo de ejecución, incluidos los despachadores, el host, el canal y las extensiones.
  3. Acceda a otros tipos de contextos, como contextos de seguridad, instancia y solicitud.
  4. Acceda al canal asociado con el objeto OperationContext o (si el canal implementa System.ServiceModel.Channels.ISession) el identificador de sesión del canal asociado.

El otro servicio que usted llama, ¿es un servicio basado en sesión? Probablemente necesite ver su código de cliente de ejemplo o documentación si está disponible.

+0

Gotcha. Así que cada vez que quiero un control más detallado sobre la información de sesión, la seguridad, etc. Debería establecer un 'OperationContextScope' por separado. El otro servicio está basado en sesiones, sí. –

Cuestiones relacionadas