Share via


IStackWalk.Assert 方法

定义

断言调用代码可以访问当前权限对象所标识的资源,即使尚未对堆栈中的高级调用方授予访问该资源的权限。

public:
 void Assert();
public void Assert ();
abstract member Assert : unit -> unit
Public Sub Assert ()

例外

调用代码没有 Assertion

注解

调用Assert将停止对调用堆栈中较高方调用方的权限检查。 因此,即使这些调用方没有必要的权限,他们仍然可以访问资源。 仅当调用Assert的代码为其断言的权限传递安全检查时,断言才有效。

对 的 Assert 调用将有效,直到调用代码返回到其调用方,或者直到对 的后续调用 Assert 使上一个断言无效为止。 此外, RevertAssert 或删除 RevertAll 挂起 Assert的 。

Assert 对于未授予的权限,将被忽略,因为对该权限的要求不会成功。 但是,如果调用堆栈上较低的代码调用 Demand 该权限, SecurityException 则当堆栈访问尝试调用 Assert的代码时,将引发 。 发生这种情况是因为调用 Assert 的代码尚未被授予权限,即使它尝试了 Assert 该权限。

注意

由于调用 Assert 消除了必须向调用链中的所有代码授予访问指定资源的权限的要求,因此,如果使用不当或不当,调用可能会打开安全漏洞。 因此,应谨慎使用。

适用于

另请参阅