4

我正在使用 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>
4

0 回答 0