WCF サービスを使用しているクライアントで作業しています。さまざまなケースで、サービスは、特定の障害の背後にある理由を通知する関連メッセージとともに FaultException を発生させるだけです。
これらの障害の一部は、クライアント アプリケーションで処理できるものですが、FaultExceptions Message または Reason で文字列の照合を実行して、対応できるものかどうかを判断するのはためらいがあります。
FaultException の FaultCode を使用して、処理できる特定の種類の Fault を識別できることを期待していましたが、これは純粋に少数の SOAP 障害を識別するためのもののようです。これについての私の解釈が間違っている場合は、訂正してください。
FaultException が発生する可能性があることはわかっていますが、障害の背後にある理由ごとに新しい型を作成する必要があると期待するのは非現実的だと感じています。
この状況をどのように処理しますか。わざとらしい例として。次のメソッドを提供するサービスを考えてみましょう。
RecordDetails GetRecordById(string id)
void Add(RecordDetails record)
void Update(RecordDetailsUpdateRequest rdur)
上記の例で、存在しない ID で GetRecordById を呼び出すと、「レコードが見つかりません」というメッセージとともに FaultException を受け取ります。同様に、既に存在するレコードに対して Add を呼び出すか、存在しないレコードに対して Update を呼び出すと、失敗の理由を詳述する Message/Reason を含む FaultException が返されます。更新または挿入する必要があるかどうかを判断するには、レコードが存在するかどうかを知る必要があります。前述したように、文字列が同じままかどうかを制御できないため、単純に文字列を照合することをためらっています。
この状況 (RecordNotFoundException などを詳述する FaultException に関連付けられた型) またはエラーに関連する特定の詳細を定義する FaultException に関連付けられたジェネリック型で何を期待しますか。たとえば、メンバー Code (失敗の理由の定数または列挙識別子) を持つ RecordOperationExcpetion クラスと、ユーザー フレンドリなメッセージ。
少なくともこの方法で、文字列の一致に頼ることなくエラーの原因を特定できました。
あなたの考えは大歓迎です。