CodeAccessPermission.Assert CodeAccessPermission.Assert CodeAccessPermission.Assert CodeAccessPermission.Assert Method

定義

呼び出し側コードが、このメソッドを呼び出すコードを通じて、アクセス許可要求によって保護されているリソースにアクセス可能であるということ、それも、スタックの中で上位に位置する呼び出し側にリソースへのアクセス許可が付与されていない場合でさえそれが可能であることを宣言します。Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Assert() を使用すると、セキュリティ上の問題が発生することがあります。Using Assert() can create security issues.

public:
 virtual void Assert();
[System.Diagnostics.Conditional("FEATURE_MONO_CAS")]
public void Assert ();
abstract member Assert : unit -> unit
override this.Assert : unit -> unit
Public Sub Assert ()

実装

例外

呼び出しコードに Assertion が指定されていません。The calling code does not have Assertion.

または-or- 現在のフレームにはアクティブな Assert() が既に存在しています。There is already an active Assert() for the current frame.

注釈

呼び出し履歴は、通常、コールスタックの上位にあるメソッドが呼び出し履歴の下位にあるメソッドを呼び出すように、拡張ダウンとして表されます。The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack. Assert呼び出すと、呼び出し履歴の下位にあるスタックウォークが、このメソッドを呼び出すコードを超えて呼び出し履歴を処理するのを防ぐことができます。Calling Assert prevents a stack walk originating lower in the call stack from proceeding up the call stack beyond the code that calls this method. したがって、呼び出し履歴の上位にある呼び出し元がリソースにアクセスするために必要なアクセス許可を持っていない場合でも、必要なアクセス許可に対してこのメソッドを呼び出すコードを使用してアクセスできます。Therefore, even if callers higher on the call stack do not have the requisite permissions to access a resource, they can still access it through the code that calls this method on the necessary permission. アサーションは、を呼び出すAssertコードが、アサートされているアクセス許可のセキュリティチェックに合格した場合にのみ有効になります。An assertion is effective only if the code that calls Assert passes the security check for the permission that it is asserting.

の呼び出しAssertは、呼び出し元のコードが呼び出し元に戻るまで有効です。The call to Assert is effective until the calling code returns to its caller. 1つAssertのフレームでアクティブにできるのは1つだけです。Only one Assert can be active on a frame. フレームにアクティブAssertAssertが存在するときにを呼び出そうとするとSecurityException、が発生します。An attempt to call Assert when an active Assert exists on the frame results in a SecurityException. RevertAllアクティブRevertAssert なを削除するには、またはを呼び出します。AssertCall RevertAssert or RevertAll to remove an active Assert.

Assertは、許可されていないアクセス許可の要求が成功しないため、このアクセス許可は無視されます。Assert is ignored for a permission not granted because a demand for that permission will not succeed. ただし、呼び出し履歴上のコードがそのアクセスDemand許可を呼び出すとSecurityException 、スタックウォークがを呼び出そうAssertとしたコードに到達すると、がスローされます。However, if code lower on the call stack calls Demand for that permission, a SecurityException is thrown when the stack walk reaches the code that tried to call Assert. これは、を呼び出しAssertたコードにアクセス許可が付与されていないためにAssert発生します。This happens because the code that called Assert has not been granted the permission, even though it tried to Assert it.

注意事項

を呼びAssert出すと、指定されたリソースにアクセスするためのアクセス許可を呼び出しチェーン内のすべてのコードに付与する必要があるという要件がなくなるため、誤って、または不適切に使用した場合に、セキュリティの問題を開くことができます。Because calling Assert removes the requirement that all code in the call chain must be granted permission to access the specified resource, it can open up security issues if used incorrectly or inappropriately. そのため、十分な注意を払って使用する必要があります。Therefore, it should be used with great caution.

注意 (継承者)

このメソッドをオーバーライドすることはできません。You cannot override this method.

セキュリティ

SecurityPermission
を呼び出すAssert()ことができます。for the ability to call Assert(). 関連付けられた列挙型:AssertionAssociated enumeration: Assertion

適用対象

こちらもご覧ください