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フレーム上でアクティブにすることができます。Only one Assert can be active on a frame. 呼び出そうとするとAssertときに、アクティブなAssertでフレーム結果上に存在する、SecurityExceptionします。An attempt to call Assert when an active Assert exists on the frame results in a SecurityException. 呼び出すRevertAssertまたはRevertAll、アクティブなを削除するAssertします。Call 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

適用対象

こちらもご覧ください