SOAPを使用してクライアントにエラーをどのように返すべきか混乱します。SOAPによるWCF障害
私はwcfサービスを持っていますが、クライアントがどの技術を使用しているのかよくわからないので、SOAP仕様に固執したいと思います。
私が読んだ限り、フォールトメッセージはこれを処理する最善の方法のようです。
私は私のサービスは、多くの異なる可能な障害を持つ見ることができます:すでに
- ヌル\は、データエラーに
- データフォーマットエラーを予想あなたの要求を処理することができません "タイプのエラー
これらのフォールトごとに新しいオブジェクトを作成し、そのように投げることは適切でしょうか:
FaultException<NullFault>(nf);
FaultException<InvalidDataFault>(idf);
FaultException<ArguementFault>(af);
FaultException<RangeFault>(rf);
クライアントは、多くのプロパティを持つ大きなオブジェクトを実質的にすべてのメソッド (つまり、顧客、注文など)に渡しています。
エラーを処理してクライアントに返信する適切な方法でしょうか?
メソッドの上の属性に各フォルトを追加する必要はありません。
IE:
[OperationContract]
[FaultContract(typeof(NullFault))]
[FaultContract(typeof(InvalidDataFault))]
[FaultContract(typeof(ArguementFault))]
[FaultContract(typeof(RangeFault))]
void CreateCustomer(Customer customer);
また、何GenericFaultでしょうか?どのようにビジネスルールのエラーを処理しますか?つまり、顧客が既に存在していて、余りにも多くの広告申込情報を送付していない、その地域に出荷していない、支払い方法が受け付けられていないなど
この方法が適切であるかどうか、または別の容認された解決策があり、「ビジネスルール」の状況をどのように処理するかを教えてください。
お返事ありがとうございました。 私は素早くフォローアップの質問: あなたが単一の方法で行くならば、フォールトタイプのenumプロパティを作成することをお勧めしますか(NullReference、Range、InvalidData、BusinessRule、Other)? この列挙型もSOAPメッセージで渡されるかどうか知っていますか? ありがとう、 スティーブン – stevenrosscampbell
あなたはそのような列挙型を返すことができますが、クライアントがその情報を見て何かをしなければならないことに留意してください。送信した情報でプログラマチックな何かをするつもりがない場合は、送信しないでください。 –
はい、同意します。 私ができることは、彼らにそれについて話し、それに応じてそれを使うことを望むことだと思います。 ありがとう、 スティーブン – stevenrosscampbell