クライアントに渡される前にサービス境界に到達するすべての例外をログに記録するために、WCF サービスに IErrorHandler を実装しようとしています。例外を型指定された FaultException に変換するために IErrorHandlers を既に使用していますが、これは非常に便利です。IErrorHandler.HandleError() の MSDN によると、境界でのログ記録にも使用されることを意図しています。
問題は、HandleError 関数が操作スレッドで呼び出されることが保証されていないため、どの操作が例外をトリガーしたかに関する情報を取得する方法がわからないことです。例外自体から TargetSite を取得できますが、これにより、操作ではなく内部メソッドが得られます。StackTrace 文字列を解析して、それがスローされた場所を特定することもできますが、これは少し壊れやすく、ばかげているようです。HandleError 関数内で状態情報 (メッセージ、操作の説明など) を取得するための一貫したサポートされている方法はありますか? または、サービス呼び出しの例外を自動的にログに記録する他の方法はありますか?
既存のロギング フレームワークを使用して本番環境に実装するソリューションを探しているので、SvcTraceViewer はそれを行いません。
ありがとう。