1

障害をスローするときにFaultExceptionの代わりにカスタムタイプを使用するようにWCFサービスクライアントを構成できるかどうか疑問に思いました。カスタムタイプはFaultExceptionを継承しますが、エラーに関する追加の詳細もあります。

カスタムFaultExceptionを使用する理由は、SOAPヘッダーからGUIDを保存できるようにするためです。

サービスクライアントが返す障害を手動でキャッチして再スローできることはわかっていますが、それは薄っぺらです。将来の開発者が同じことをすることを保証する方法はありません。

生成されたサービスクライアントクラスをサブクラス化し、そこにエラー処理を入れることを考えましたが、ターゲットサービスが変更されるたびに多くの作業が発生します。

では、Faultに対してカスタムのFaultExceptionタイプをスローするようにWCFサービスクライアントを構成することは可能ですか?

4

1 に答える 1

2

独自のIErrorHandler実装を作成できます。

http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.ierrorhandler.aspx

ProvideFaultをオーバーライドしてから、通常の例外(プレーンなFaultExceptionを含む)から独自のカスタムベースFaultException<T>に変換します。ここで、Tは、カスタムプロパティを含めるように定義できる独自のタイプです。

その後、コードまたはweb / app構成のいずれかで、IErrorHandlerの実装をサービス動作として登録する必要があります。

于 2013-03-18T19:34:26.377 に答える