2012-03-22 26 views
2

私は非常にシンプルなwcfサーバーを持っています。クライアントが「運用」契約を使用する場合、これをログファイルに記録します。 私はこれについて2つの解決策を思いついたが、彼らは良い解決策であり、ここでは専門家からのヒントが必要であるとは思っていない。 私の最初の解決策: typeof(serverclass)でホストを作成するのではなく、serverclassのインスタンスを使用します。 serverclassにはイベントがあり、イベントハンドラを添付してログに書き込みます。 このソリューションの問題点は、マルチスレッド、リエントラント、マルチセッション、コール設定などの特別な注意が必要だということです。 私の2番目の解決方法: serverclass内で静的なデリゲートを使用し、 typeof(serverclass)。このようにして、スタティックデリゲートにロギング機能を割り当てることができます。wcfサービスサーバーからイベントを呼び出す

私はこれが最善の方法だとは思わないし、コメントやヒントを本当に感謝しています。 ありがとうございます。

+0

ログファイルはどこにありますか?クライアントまたはサーバーでは? – Jontatas

答えて

2

WCFビヘイビア拡張を使用して呼び出しをインターセプトし、ログファイルを書き込むことができます。

さまざまな拡張インターフェイスを実装することでインターセプトする方法はいくつかありますが、メッセージインスペクタもその1つです。

hereをご覧ください。

+0

私はメッセージインスペクタの使用に同意します。 WCFにはこの機能が既に組み込まれています。ログ形式に気にしない場合は、WCFの組み込みメッセージロギングを使用することもできます。http://msdn.microsoft.com/en-us/library/ms730064.aspx – ChrisNel52

+0

ありがとうございました。私は良い方法がなければならないと確信していた。 – tdolphin

1

AOPのアプローチも考えられます。 PostSharpはこのための良いプラットフォームです。無料版は、エントリ、終了、およびエラーの側面をサポートしています。

関連する問題