Windows Communication Foundation (WCF) Web HTTP エラー処理を使用すると、操作と同じ形式 (XML や JSON など) を使用して、HTTP 状態コードを指定し、エラーの詳細を返す WCF Web HTTP サービスからエラーを返すことができます。
WCF Web HTTP エラー処理
WebFaultException クラスは、HTTP 状態コードを指定できるコンストラクターを定義します。 その後、この状態コードがクライアントに返されます。 WebFaultException クラスのジェネリック バージョンWebFaultException<T>、発生したエラーに関する情報を含むユーザー定義型を返すことができます。 このカスタム オブジェクトは、操作で指定された形式を使用してシリアル化され、クライアントに返されます。 次の例は、HTTP 状態コードを返す方法を示しています。
public string Operation1()
{
// Operation logic
// ...
throw new WebFaultException(HttpStatusCode.Forbidden);
}
次の例は、HTTP 状態コードとユーザー定義型の追加情報を返す方法を示しています。
MyErrorDetail
は、発生したエラーに関する追加情報を含むユーザー定義型です。
public string Operation2()
{
// Operation logic
// ...
MyErrorDetail detail = new MyErrorDetail()
{
Message = "Error Message",
ErrorCode = 123,
}
throw new WebFaultException<MyErrorDetail>(detail, HttpStatusCode.Forbidden);
}
上記のコードは、許可されていない状態コードと、 MyErrorDetails
オブジェクトのインスタンスを含む本文を含む HTTP 応答を返します。
MyErrorDetails
オブジェクトの形式は、次の方法で決まります。
サービス操作で指定された
ResponseFormat
またはWebGetAttribute属性のWebInvokeAttribute パラメーターの値。FormatにアクセスしてOutgoingWebResponseContextプロパティの値を指定します。
これらの値が操作の書式設定にどのように影響するかの詳細については、「 WCF Web HTTP の書式設定」を参照してください。
WebFaultException は FaultException であるため、SOAP エンドポイントと Web HTTP エンドポイントを公開するサービスのエラー例外プログラミング モデルとして使用できます。