Мой метод AfterRecieveRequest генерирует GUID и передает его через переменную correlationState в метод BeforeSendReply.
Между этими двумя вызовами многое происходит в моей службе WCF, и я хотел бы получить доступ к этому GUID из методов Webservice.Есть ли способ для меня, чтобы получить доступ к этому объекту через службу WCF?
GUID используется для целей ведения журнала, так как я вызываю API другого приложения и хочу записывать результаты и регистрировать их под GUID, созданным в реализации IDispatchMessageInspector.
например:
Реализация IDispatchMessageInspector:
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");
}
Служба 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;
}
Как мне поступить, чтобы выполнить это?Я думал об использовании атрибута ThreadStatic, чтобы поток держал GUID где-то в памяти, но боюсь, что моего понимания этого предмета недостаточно для его реализации прямо сейчас.