2

WCF プロキシ (vs2008 または svcutil によって生成された) が障害 (障害状態) になるのはどのような場合ですか? そのため、新しいインスタンスを再作成し、障害のあるインスタンスの使用を避けることができます。

現在、TimeoutException、FaultException、CommunicationObjectAbortedExceptionを処理しています

            try
            {
                client.Method1(args);
            }
            catch (TimeoutException)
            {
                client.Abort();
                ReCreate();
            }
            catch (FaultException)
            {
                client.Abort();
                ReCreate();
            }
            catch (CommunicationObjectAbortedException)
            {
                client.Abort();
                ReCreate();
            }

これらすべてのタイプを回避して、親の CommunicationException のみを処理できると思いますが、これで十分ですか? コメントが必要です

4

2 に答える 2

2

FaultException処理および変換されない、またはFaultException<T>チャネルに障害が発生する可能性のあるサーバー側のキャッチされない例外。通話ごとのシナリオまたは一方向のシナリオでは、チャネルに障害が発生していることを気にしないことがよくありますが、セッションベースのシナリオでは間違いなく気になります。

最善の策は、サーバー側ですべての例外を実際にキャッチして、それらを抑制する(サーバーにログに記録して何もしない)か、あるFaultException方法でクライアントに返すことです。

これを行うには、サービス実装でIErrorHandlerインターフェイスも実装する必要があります。これにより、すべての例外をキャッチし、ログに記録して抑制するか、SOAP障害に変換することができます。

マーク

于 2009-07-26T18:27:05.073 に答える
0

WCF プロキシ オブジェクトは、faultException 以外のあらゆる種類の例外が原因で、エラーになる可能性があります。したがって、基本的に最善の策は、プロキシの状態を確認することであり、新しいものを作成するために障害が発生しています。

もう 1 つ覚えておくべきことは、faulted は WCF セッションに関連していることです。WCF セッションが必要ない場合は、必ずそれらをオフにしてください。これにより、一連の問題の可能性を完全に防ぐことができます。

于 2009-07-26T14:34:33.000 に答える