1

数日前、私は非常によく似た質問をしました。アプリケーション内で値/エラーを返すことについてでした。オブジェクトとしてエラーを返さず、カスタム例外をスローするという回答を受け入れます。現在、WCF サービスを使用してそれを処理する方法が正確にはわかりません。サービスがクライアントにとって可能な限りシンプルであることを願っています。

非常に一般的に言えば、私のプロジェクトは次のようになります: クライアント -> WCF サービス アプリケーション -> データベース。

WCF アプリ内には独自の例外クラスがあり、正常に動作します。しかし、クライアントが db から sth を取得したいとします。私の質問は次のとおりです。アプリ外のクライアントに何を返す必要がありますか? A. 複合型: メタデータ (考えられるエラーに関する情報 [1]) を持つ値。そして、本当に予期しないエラーが発生した場合は、例外をスローします。B. 値のみ (エラーが発生する可能性がある場合 - 例外をスローする)

[1] - 無効な文字列形式です。データベースまたはそのような sth に接続できません。つまり、エラーが正確に何であるかを知っていれば、なぜクライアントに例外をスローするのか、それについてはわかりません。

4

2 に答える 2

2

この問題にどのように取り組むかは、クライアントによって異なります。Silverlight クライアントをサポートする必要がある場合、ブラウザーの HTTP スタックを使用する Silverlight クライアントは例外を処理できないため、例外をスローすることはできません。Silverlight クライアントの場合、私は通常、ここで説明するアプローチをお勧めします (そして私自身も使用します) 。

于 2011-08-02T08:25:20.427 に答える
1

設計上、WCF はクライアントから例外を隠します。例外が発生したときにクライアントに返される情報がある場合は、その情報を決定するのは開発者の責任です。

FaultContractorの使用を検討しFaultContract<T>、そのメカニズムを介して必要な例外を返します。

注目すべき記事は次のとおりです。

フォールト コントラクト WCF チュートリアル フォールト コントラクト

WCF の IErrorHandler も参照してください。

IErrorHandler インターフェイス

于 2011-08-02T08:27:21.377 に答える