2011-08-19 54 views
0

我使用log4net進行日誌記錄,並且我想記錄每個serice方法調用唯一的標識。我不需要它在服務調用中唯一,只是在方法調用中。有沒有可以在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,但多數民衆贊成總是空。

我讀過關於wcf實例關聯,但我不需要複雜的東西(例如在不同的方法調用中唯一)。

如果任何人都可以提供幫助,請多多諒解。提前致謝。

+0

在實際方法之外找到/生成此標識符很重要嗎?否則,我只需從'log'方法調用中的方法發送這樣的標識符。 – CyberDude

回答

0

純SOAP或REST在消息中沒有包含這樣的標識。您必須使用一些支持消息標識的附加功能或傳輸協議(例如MSMQ)。在MessageId的情況下,您必須使用帶WS-Addressing的SOAP服務,並且必須從客戶端傳遞此信息。