Mi método AfterRecieveRequest genera un GUID, y pasa este a través de la variable correlationState con el método BeforeSendReply.
Entre esas dos llamadas, una gran cantidad sucede en mi servicio WCF, y me gustaría acceder a este GUID desde el interior de los métodos Webservice. ¿Hay alguna manera de acceder a este objeto a lo largo del servicio WCF?
El GUID se utiliza para cortar troncos, como yo estoy llamando a la API de una aplicación distinta y desea registrar los resultados y registrarlos bajo el GUID generada en la ejecución IDispatchMessageInspector.
por ejemplo:
IDispatchMessageInspector aplicación:
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
var correlationState = GUID.NewGuid();
StaticLogger.AddLog(originalMessage, correlationState.ToString(), WCF-Incoming);
return correlationState;
}
public void BeforeSendReply(ref Message reply, object correlationState)
{
StaticLogger.AddLog(originalMessage, correlationState.ToString(), WCF-Outgoing);
}
Servicio WCF:
public ResponseObject WCFMethod(string param1, string param2)
{
ResponseObject response = new ResponseObject();
Client client = new Client();
ClientObject result = client.OutsideOperation(param1,param2);
// here, i would like to log the result object and use the GUID from the correlationstate
StaticLogger.AddLog(result, correlationState.ToString(), WCF-Internal )
response.resultAttribute = result;
return response;
}
¿Cómo iba a pasar a lograr esto? He estado pensando acerca del uso de un atributo ThreadStatic modo que el hilo mantiene el GUID en algún lugar de la memoria, pero me temo que mi comprensión de este tema es insuficiente para ponerlo en práctica en este momento.