私の質問は、WCF サービスでのエラー処理と、呼び出し元のクライアントにエラー情報を渡すことに関するものです。インターフェイスを定義する際に、FaultContract を ServiceContract の一部として使用できることは知っています。FaultContract を使用したくなく、DataContract 応答の一部としてエラー応答または成功応答を Result 型のオブジェクトとして含める場合はどうすればよいですか?
2つのアプローチの違いは何ですか? 特に、内部的に使用されている余分なチャンネルはありますか?
私は両方のアプローチを試しましたが、両方ともうまくいきました。私がこれまでに知っていることは、アプローチ 2 では、トラップするエラーをクライアントが知る必要がないということです。クライアントは Result オブジェクトを調査するだけで確認できます。
FaultContract コードの例
public interface ICalculator
{
[OperationContract]
[FaultContract(typeof(MathFault))]
int Divide(int n1, int n2);
}
私のエラー処理コード
public interface ICalculator
{
[OperationContract]
Result Divide(int n1, int n2);
}
[DataContract]
public class Result
{
[DataMember]
public bool Success { get; set; }
[DataMember]
public string ErrorNumber { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
}