Registro de solicitudes / respuestas en un servicio WCF REST
Pregunta
Estoy buscando una manera de conectarse ambas solicitudes y respuestas en un servicio WCF REST. El kit de inicio WCF REST viene con una clase RequestInterceptor que puede ser utilizado para interceptar las peticiones, pero no parece ser un equivalente para las respuestas. Idealmente, me gustaría ser capaz de interceptar una respuesta justo antes de su transmisión por el cable, por ejemplo, cuando el método devuelve servicio subyacente. ¿Alguna sugerencia?
Solución
Tenga en cuenta que si se desea interceptar el mensaje crudo, y no los parámetros, puede inyectarse su implementación de IDispatchMessageInspector en lugar del punto de extensión IParameterInspector que Dani sugiere.
Otros consejos
Hay una técnica en WCF: se crea InstrumentedOperationAttribute que se deriva de atributo, IOperationBehavior.
Dentro de implementar:
public void ApplyDispatchBehavior(
OperationDescription operationDescription,
DispatchOperation dispatchOperation
)
{
dispatchOperation.ParameterInspectors.Add(
new ServerPI()
);
}
y el () de clase ServerPI es lo que hace la magia: hacer todo lo que necesita en beforecall y AfterCall métodos:
class ServerPI : IParameterInspector
{
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
Guid result = (Guid)correlationState;
// ...
}
public object BeforeCall(string operationName, object[] inputs)
{
string parameter1 = inputs[0] as string;
return Guid.NewGuid();
}
}