我正在使用 WCF 开发一组服务。该应用程序正在使用 Castle Windsor 进行依赖注入。我添加了一个IErrorHandler
通过属性添加到服务的实现。到目前为止一切正常。IErrorHandler
(被调用的类的对象FaultHandler
被正确应用和调用。
现在我正在添加日志记录。Castle Windsor 设置为注入记录器对象(的实例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>