1

多数のレイヤーを持つ大規模な Web アプリを構築しています。ビジネス層と通信するために、データが必要なときに Web 層が呼び出すサービス層を使用しています。残念ながら、ビジネス層で例外がスローされた場合、Web 側のサービスが例外をラップして再スローしているようです。WCF が元の例外を新しい例外でラップすることなく、エラーをカプセル化してログに記録する明確な方法を探しています。

ありがとう

4

2 に答える 2

0

これにはさまざまな方法があります。あなたが提示したソリューションは、あまりスケールしませんが、半分悪くはないと思います (ビジネス固有のエラー処理と Web 関連のコードを混在させると、何らかの結合が作成されます)。これはすべてアーキテクチャに依存します。ビジネス エラーを Web エラーに変換する表面的な軽量レイヤーを追加し、Web レイヤー エラー処理コードで処理することができます。また、AoP を実行して呼び出しをインターセプトし、上のレイヤーのエラーを変換することもできます。

于 2011-03-07T15:06:14.310 に答える
0

FWIW、公開された WCF Service Layer メソッドのそれぞれが System.Exception をキャッチし、それを HandleException ヘルパーに渡します (これは、私が推測する基本サービス クラス メソッドでもある可能性があります)。

ハンドル例外:

  1. エラーをログに記録します
  2. SOAP エラーに例外の再フォーマットを適用します (現在、WCF Exception Shieldingを使用しています) 。
  3. 例外固有の処理 (形式if (ex is SomeTypeOfException)...)を適用します。
于 2011-03-07T15:08:28.000 に答える