2011-08-19 5 views
0

log4net을 사용하여 로깅 중이며 각 serice 메서드 호출에 고유 한 ID를 기록하려고합니다. 필자는 메서드 호출 내에서 서비스 호출간에 고유하지 않아도됩니다. wcf에서 사용할 수있는 ID가 내장되어 있습니까? 메서드 호출을 시작할 때 수동으로 GUID 또는 무언가를 만들고 싶지 않습니다.WCF 각 서비스 메서드 호출에 대한 고유 ID

wcfMethod(int x) 
{ 
log("xxx"); 
somework 
log("yyy"); 
} 

private log(string message) 
{ 
    var frame = new StackFrame(1); 
    var method = frame.GetMethod(); 
    var type = method.DeclaringType; 
    var name = method.Name; 

    var log = LogManager.GetLogger(type); 

    // LOG ID HERE 
    ThreadContext.Properties["MessageId"] = OperationContext.Current.IncomingMessageHeaders.MessageId; // SOMETHING HERE 
} 

나는 OperationContext.Current.IncomingMessageHeaders.MessageId를 시도했지만 항상 null입니다.

wcf 인스턴스 상관 관계에 대해 읽었지만 복잡한 메소드 (예 : 다른 메소드 호출에서 고유함)가 필요하지 않습니다.

많은 사람에게 도움이 될만한 사람이 있으면 알려 주시기 바랍니다. 미리 감사드립니다.

+0

실제 식별자 밖에서이 식별자를 찾고 생성하는 것이 중요합니까? 그렇지 않으면'log' 메소드 호출에서 메소드로부터 그런 식별자를 전송할 것입니다. – CyberDude

답변

0

일반 SOAP 또는 REST에는 메시지에 이러한 ID가 포함되어 있지 않습니다. 메시지의 식별을 지원하는 몇 가지 추가 기능 또는 전송 프로토콜 (예 : MSMQ)을 사용해야합니다. MessageId의 경우 WS-Addressing을 사용하여 SOAP 서비스를 사용해야하며이 정보는 클라이언트에서 전달되어야합니다.

관련 문제