0

wcf メソッドが障害例外をスローし、クライアント アプリケーションがその障害例外をキャッチすることを知っています。しかし、そのwcfメソッドがクライアント側でフォルト例外をスローするかどうかを知る方法はありますか?

4

1 に答える 1

0

WCF サービスを作成するときに、操作コントラクトを次の[FaultContract]属性で装飾できます。

[ServiceContract]
public interface IService1
{
    [OperationContract]
    [FaultContract(typeof(MyFaultContract))]
    void DoWork();
}

これはMyFaultContract、サービスのメタデータ (WSDL) でこれに関する情報を発行します。次に、クライアント プロキシを作成すると (VS で [サービス参照の追加] を使用するか、 で直接svcutil.exe)、このフォールト コントラクトがクライアントに認識され、このタイプの例外をキャッチできます。

したがって、ここでの考え方は、操作コントラクトが属性で装飾されているかどうかを調べて、[FaultContract]この操作がスローする可能性のある障害コントラクトの種類を知ることです。カスタムの FaultContract 属性が定義されていない場合、クライアントでは非ジェネリック バージョンの FaultException のみをキャッチできることを意味します。

于 2013-10-20T12:06:06.703 に答える