https://docs.microsoft.com/en-us/dotnet/framework/wcf/wcf-error-handling
WCFアプリケーションで発生したエラーは、3つのグループのいずれかに属します。
-
通信エラー
-
プロキシ/チャネルのエラー
-
アプリケーションエラー
ネットワークが利用できない場合、通信エラーが発生し、クライアントが間違ったアドレスを使用して、またはサービスのホストは、着信メッセージを聞いていません。このタイプのエラーは、クライアントに返されて、CommunicationExceptionまたはて、CommunicationExceptionがクラスを由来しました。
プロキシ/チャネル・エラーがチャネルまたはプロキシ自体の内部で発生するエラーです。このタイプのエラーが含まれます:閉じられたプロキシまたはチャネルを使用しようとすると、契約の不一致は、クライアントとサービスの間に存在する、またはクライアントの資格情報は、サービスによって拒否されています。ここに一覧表示するにはあまりにも多く、このカテゴリ内のエラーの多くの異なる種類があります。この種の誤差は(何の変換は例外オブジェクトに対して実行されていない)、そのままクライアントに返されます。
アプリケーションエラーは、サービス操作の実行中に発生します。この種のエラーは、クライアントに送信されFaultExceptionまたはFaultException <TDetail> 。
WCFでのエラー処理は、以下の1つまたは複数によって実行されます。
-
直接スローされた例外を処理します。これは、通信のみとプロキシ/チャネルエラーのために行われます。
-
障害の契約を使用して
-
実装IErrorHandlerインタフェースを
-
取り扱いのServiceHostのイベントを
フォルト契約
障害の契約では、プラットフォームに依存しない方法でのサービス運用中に発生するエラーを定義することができます。デフォルトでは、サービス操作内からスローされたすべての例外は、クライアントに返されますFaultExceptionのオブジェクト。FaultExceptionのオブジェクトは、ほとんど情報が含まれています。あなたは、障害の契約を定義して、エラーを返すことによって、クライアントに送信される情報を制御できFaultException <TDetail>を。詳細については、契約やサービスの障害を指定して取り扱い。
IErrorHandler
IErrorHandlerのインターフェイスは、あなたのWCFアプリケーションがエラーにどのように応答するかをより細かく制御することができます。それはあなたのクライアントに返され、あなたがロギングなどのカスタムエラー処理を実行することを可能にされた障害メッセージを完全に制御できます。詳細についてはIErrorHandlerとエラー処理および報告に拡張コントロール
ServiceHostのイベント
ServiceHostクラスのホストサービスおよびエラーを処理するために必要とされるかもしれないいくつかのイベントを定義します。例えば:
詳細については、を参照のServiceHostを