0

次のサービス メソッドの例:-

[PrincipalPermission(SecurityAction.Demand, Role="BUILTIN\\Administrator")]
public string GetTest()
{
  try
  {
    return "Hello";
  }
  catch (Exception ex)
  {
    throw ex;
  }
}

呼び出し元が正しい役割にない場合に、メソッドからエラーを取得するにはどうすればよいですか。設計時に、エラーはメソッド行 (つまり、パブリック文字列 GetTest) で中断し、catch に到達しません。実行時に、Silverlight アプリケーションで未処理のエラーとして報告されます (そこにも try.. catch ブロックがあります)。try ブロックに入らないため、エラーをキャッチする場所がないようです!!

4

2 に答える 2

3

メソッド内ではなく、メソッドが実際に呼び出される前に、 (WCF ランタイムによって) ロールのチェックが行われます。

この呼び出しを行うときは、呼び出し側でこの例外を処理する必要があります。

サービス コード内の特定の条件を確認する必要がある場合は、メソッドを属性で装飾せず、代わりにコードでロール プロバイダーを使用して特定の条件を確認します。

于 2011-02-28T16:12:55.437 に答える
2

WCF サービスのグローバル エラー ハンドラーが必要な場合は、IErrorHandlerを実装してカスタム動作に追加できます。操作は、try ブロックの外側でスローされた例外をキャッチできません。

于 2011-02-28T16:17:25.917 に答える