2010-11-27 13 views
4

私のサービスメソッドはPrincipalPermissionAttributeとマークされており、カスタムIErrorHandler実装がサービスに添付されています。着信要求にメソッドSystem.Security.SecurityExceptionが実行される権限がない場合はスローされます。 IErrorHandler.ProvideFault()がトリガーされ、私は特別なフォールトを提供したい。しかし、errorパラメータは元の例外ではありません。タイプはFaultExceptionです。さらに、は設定に次のような設定がありますが、nullです。WCF IErrorHandler.ProvideFault()の振る舞い

<serviceDebug includeExceptionDetailInFaults="true"/> 

なぜですか?どのようにして希望の動作を達成できますか?

答えて

1

thisSecurityExceptionによると、WCFのための "特別な" のようなものです:

SecurityExceptionがCAS (コードアクセスセキュリティ)に関連している、そしてそれは 致命的な例外です。この例外 は、サービスモデル の例外に関係しないため、 IErrorHandlerで処理することはできません。

私は、サービスインターフェイスを実装するクラスのメソッドから呼び出された追加のクラスを作成して終了しました。PrincipalPermissionAttributeとtry/catchのハンドラー関数があります。