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>