2010-08-03 43 views
0

我實現了一個實現IErrorHandler接口來記錄WCF錯誤的類。我想要做的事情之一是記錄用戶的身份,而不是在發生異常時連接到我的服務。我所有的日誌記錄都發生在IErrorHandler接口的HandleError()方法中,但由於HandleError()可能沒有當前的操作上下文,因此我無法獲取SecurityContext.PrimaryIdentity。我想出了以下代碼來捕獲HandleError方法中可能無法使用的東西,但我不確定這會在所有情況下都能正常工作。關於WCF中日誌記錄錯誤的問題

public class MyErrorHandler : IErrorHandler 
{ 
    private IIdentity identity; 

    public bool HandleError(Exception error) 
    { 
     // Do something with identity   

     return false; 
    } 

    public void ProvideFault(Exception error, MessageVersion version, ref Message fault) 
    { 
     this.identity = Operation.Current.SecurityContext.PrimaryIdentity; 
    } 
} 

上面的代碼似乎工作,但是有沒有什麼問題?

謝謝!

回答

1

出於某種原因,我認爲每次出現異常時都會創建該類。無論如何,我可以通過使用Exception對象的Dictionary屬性來解決我的問題,以存儲我想用我的例外記錄的自定義數據。