4

WCF を使用して一連のサービスを開発しています。このアプリケーションは、Castle Windsor で依存性注入を行っています。IErrorHandler属性を介してサービスに追加される実装を追加しました。これまでのところ、すべてが機能しています。(呼び出されたクラスのIErrorHandlerオブジェクトFaultHandlerは適切に適用され、呼び出されています。

今、ロギングを追加しています。Castle Windsor は、ロガー オブジェクト (のインスタンス) を注入するように設定されていますIOurLogger。これは機能しています。FaultHandlerしかし、ロガーに追加しようとするとnull になります。

のコードは次の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ときに nullであるため、これは独自の例外をスローします。HandleError()

ロガーはサービス自体に正常に挿入されており、そこで使用できますが、何らかの理由でFaultHandler.

Update: Here is the relevant part of the Windsor configuration file (edited to protect the innocent):

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

0 に答える 0