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>