WCF Web HTTP エラー処理
Windows Communication Foundation (WCF) Web HTTP エラー処理では、WCF Web HTTP サービスからエラーを返すことができます。このサービスは、HTTP 状態コードを指定し、操作と同じ形式 (XML、JSON など) を使用してエラーの詳細を返します。
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 エンドポイントを公開するサービスのエラー例外プログラミング モデルとして使用できます。