我正在開發一組使用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>
你使用的是wcf設施嗎? – 2009-10-21 22:10:57
是的。據我所知,它工作正常。 – 2009-10-22 02:45:15