次の方法で共有


CodeAccessPermission.Assert メソッド

定義

呼び出し側コードが、このメソッドを呼び出すコードを通じて、アクセス許可要求によって保護されているリソースにアクセス可能であるということ、それも、スタックの中で上位に位置する呼び出し側にリソースへのアクセス許可が付与されていない場合でさえそれが可能であることを宣言します。 Assert() を使用すると、セキュリティ上の問題が発生することがあります。

public:
 virtual void Assert();
public void Assert ();
abstract member Assert : unit -> unit
override this.Assert : unit -> unit
Public Sub Assert ()

実装

例外

呼び出し元のコードに Assertion がありません。

または

現在のフレームにはアクティブな Assert() が既に存在しています。

注釈

呼び出し履歴は、通常は縮小して表されるため、呼び出し履歴の呼び出しメソッドの上位のメソッドは、呼び出し履歴内で低くなります。 を呼び出すと、呼び Assert 出し履歴内の下位のスタック ウォークが、このメソッドを呼び出すコードを超えて呼び出し履歴を進めなくなります。 したがって、呼び出し履歴の上位の呼び出し元がリソースにアクセスするための必要なアクセス許可を持っていない場合でも、必要なアクセス許可でこのメソッドを呼び出すコードを介してアクセスできます。 アサーションは、 を呼び出Assertすコードが、アサートするアクセス許可のセキュリティ チェックを渡す場合にのみ有効です。

Assert 呼び出しは、呼び出し元のコードが呼び出し元に戻るまで有効です。 フレームでアクティブにできるのは 1 つだけ Assert です。 フレームにアクティブAssertな が存在する場合に を呼び出Assertそうとすると、 が発生しますSecurityException。 または RevertAll を呼び出RevertAssertして、アクティブAssertな を削除します。

Assert は、そのアクセス許可の要求が成功しないため、許可されていないアクセス許可の場合は無視されます。 ただし、呼び出し履歴の下位のコードがそのアクセス許可を呼び出すと、 SecurityException を呼び出DemandAssertそうとしたコードにスタック ウォークが到達すると がスローされます。 これは、 を呼び出 Assert したコードにアクセス許可が付与されていないために Assert 発生します。

注意事項

を呼び出すと、呼び Assert 出しチェーン内のすべてのコードに、指定されたリソースにアクセスするためのアクセス許可を付与する必要があるという要件が削除されるため、正しく使用されていないか不適切に使用されると、セキュリティの問題が発生する可能性があります。 そのため、慎重に使用する必要があります。

注意 (継承者)

このメソッドをオーバーライドすることはできません。

適用対象

こちらもご覧ください