4

私のサービスメソッドはでマークされており、サービスにPrincipalPermissionAttributeカスタムIErrorHandler実装がアタッチされています。着信要求にメソッドを実行する権限がない場合、メソッドSystem.Security.SecurityExceptionがスローされます。IErrorHandler.ProvideFault()次にトリガーされ、特別な障害を提供したいと思います。ただし、errorパラメータは元の例外ではなく、型指定されていませんFaultException。さらに、error.InnerException構成に次の設定があるにもかかわらず、はnullです。

<serviceDebug includeExceptionDetailInFaults="true"/>

なんで?どうすれば目的の動作を実現できますか?

4

1 に答える 1

1

これ によるとSecurityException、WCFにとって一種の「特別」です。

SecurityException は CAS (Code Access Security) に関連するもので、致命的な例外です。この例外はサービス モデルの例外とは関係がないため、IErrorHandler で処理することはできません。

そのため、(サービス インターフェイスを実装するクラスのメソッドから呼び出される) メソッドがマークされている追加のクラスとPrincipalPermissionAttribute、try/catch を使用するハンドラー関数を作成することになりました。

于 2011-01-27T12:04:59.650 に答える