2011-07-29 18 views
0

私が現在取り組んでいるWebサービスプロジェクトの途中以上に、私の顧客はクライアントアプリケーションに例外を投げることはできないと私に知らせることにしました。問題は、今までは、検証、データベースまたはその他の種類のエラーが発生するたびにFaultException例外を投げていたことです。私は明らかにそれ以上の質問なしにこの動作を変更する必要がありますが、問題は私が本当にそれを置き換えるべきか分からないということです。サービスには異なるDataContract構造体を返す4〜5個の終点があるので、ブール値(失敗または成功を示す)とobjectを持つ基本クラスを設計することを考えました(シリアル化された例外をスローする場合にはこれを使用します)他のすべてをDataContractsがこの構造から継承するようにします。しかし、私はこれが最良の選択肢であるとは本当に確信していません。私に何をするようアドバイスしますか?WCF、例外および継承

答えて

1

この要件は、Silverlightのコンシューマが、httpクライアントスタック(独自の欠点があります)に切り替わらない限り、例外を適切に処理できないサービスにアクセスすることが想定されるためです。

私たちは、クライアントがチェックする必要のあるすべてのサービスメソッドシグネチャにFault outパラメータを含めることで、この問題を解決しました。それは実際にはそれよりも悪く聞こえる。

+0

私の場合はうまくいくかもしれませんが、実際にはあまりにもエレガントなようには聞こえません。 – User

+1

トピックについての記事http://msmvps.com/blogs/theproblemsolver/アーカイブ/ 2009/01/27 /戻る例外情報 - 銀色のクライアント - クライアント - wcf.aspx –

+0

ありがとう!まあ、私は本当にこのアプローチを使わなければならないと思います。私はそれについて考えたことはありませんでした...それはあまりにもエレガントではないかもしれませんが、顧客が何かエレガントなものを望んでいた場合、この要件はとにかく提出されていないだろう...だから、 – User

1

これは、何かを返すサービス操作に対して確実に機能します。したがって、あなたが提案したように、そのような操作を使用するだけの場合:サービス操作を捕まえて、返されたデータコントラクトで例外をラップしてみてください。

void戻り値の型を持つサービス操作はどうですか?キャッチを試みることもできますが、どのようにステータス/エラーをクライアントに返すのですか?あなたはあなたのアプリでこのシナリオをhevするつもりですか?

+0

はい、私はそれについても考えていませんでした。私はいくつかの 'void'メソッドを持っています... – User

+0

これは"良い "データと"悪い "データを混在させています。 –

関連する問題