多数のレイヤーを持つ大規模な Web アプリを構築しています。ビジネス層と通信するために、データが必要なときに Web 層が呼び出すサービス層を使用しています。残念ながら、ビジネス層で例外がスローされた場合、Web 側のサービスが例外をラップして再スローしているようです。WCF が元の例外を新しい例外でラップすることなく、エラーをカプセル化してログに記録する明確な方法を探しています。
ありがとう
多数のレイヤーを持つ大規模な Web アプリを構築しています。ビジネス層と通信するために、データが必要なときに Web 層が呼び出すサービス層を使用しています。残念ながら、ビジネス層で例外がスローされた場合、Web 側のサービスが例外をラップして再スローしているようです。WCF が元の例外を新しい例外でラップすることなく、エラーをカプセル化してログに記録する明確な方法を探しています。
ありがとう
これにはさまざまな方法があります。あなたが提示したソリューションは、あまりスケールしませんが、半分悪くはないと思います (ビジネス固有のエラー処理と Web 関連のコードを混在させると、何らかの結合が作成されます)。これはすべてアーキテクチャに依存します。ビジネス エラーを Web エラーに変換する表面的な軽量レイヤーを追加し、Web レイヤー エラー処理コードで処理することができます。また、AoP を実行して呼び出しをインターセプトし、上のレイヤーのエラーを変換することもできます。
FWIW、公開された WCF Service Layer メソッドのそれぞれが System.Exception をキャッチし、それを HandleException ヘルパーに渡します (これは、私が推測する基本サービス クラス メソッドでもある可能性があります)。
ハンドル例外:
if (ex is SomeTypeOfException)
...)を適用します。