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 ,直到调用代码返回到其调用方。 帧上只能有一个 Assert 活动。 当帧上存在活动Assert时,尝试调用Assert结果为 SecurityException. 调用或删除RevertAssert活动RevertAllAssert

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

Caution

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

继承者说明

不能重写此方法。

适用于

另请参阅