2009-10-21 67 views
4

我正在開發一組使用WCF的服務。該應用程序正在與Castle Windsor進行依賴注入。我添加了一個IErrorHandler實現,該實現通過屬性添加到服務中。一切工作到目前爲止。該IErrorHandler對象(被稱爲FaultHandler類被正確使用和調用。如何使用Castle Windsor將對象注入WCF IErrorHandler實現?

現在我添加日誌。溫莎城堡被設置爲注入的Logger對象(的IOurLogger一個實例)。這是工作。但是,當我試着將它添加到我的FaultHandler記錄爲空

FaultHandler的代碼看起來是這樣的:。

class FaultHandler : IErrorHandler 
{ 
    public IOurLogger logger { get; set; } 

    public bool HandleError(Exception error) 
    { 
     logger.Write("Exception type {0}. Message: {1}", error.GetType(), error.Message); 

     // Let WCF handle things its way. We only want to log. 
     return false; 
    } 

    public void ProvideFault(Exception error, MessageVersion version, Message fault) 
    { 
    } 
} 

這將引發它自身的異常,因爲logger爲空時HandleError()被稱爲

記錄器正在被成功注入到服務本身,並可在那裏使用,但由於某種原因,我不能在FaultHandler中使用它。

更新:這裏是溫莎配置文件(編輯以保護無辜者)的相關部分:

<configuration> 
    <components> 
    <component id="Logger" 
       service="Our.Namespace.IOurLogger, Our.Namespace" 
       type="Our.Namespace.OurLogger, Our.Namespace" 
    /> 
    </components> 
</configuration> 
+0

你使用的是wcf設施嗎? – 2009-10-21 22:10:57

+0

是的。據我所知,它工作正常。 – 2009-10-22 02:45:15

回答

0

記錄儀是從來沒有設置這個類,因此,您所得到的是空裁判的錯誤。 你可以在你設置依賴的地方分享你的配置文件嗎?

+0

我已經更新了配置文件相關部分的問題。 – 2009-10-22 02:45:57

+0

由於FaultHandler類沒有一個構造函數來接收Logger組件,因此Logger組件必須通過windsor配置文件中的屬性設置器進行設置。嘗試將下面的內容添加到配置文件中的FaultHandler配置元素中。 Logger karthik 2009-10-23 12:18:57

+0

對不起abt的搞砸壓痕:( – karthik 2009-10-23 12:19:37

相關問題