IStackWalk.Assert 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
断言调用代码可以访问当前权限对象所标识的资源,即使尚未对堆栈中的高级调用方授予访问该资源的权限。
public:
void Assert();
public void Assert ();
abstract member Assert : unit -> unit
Public Sub Assert ()
例外
调用代码没有 Assertion。
注解
调用 Assert 会停止对调用堆栈中较高调用方的权限检查。 因此,即使这些调用方没有必要的权限,他们仍然可以访问资源。 仅当调用 Assert 的代码通过对它断言的权限进行安全检查时,断言才有效。
对调用的调用 Assert 生效,直到调用代码返回到调用方或后续调用才能 Assert 使上一个断言无效。 此外, RevertAssert 或删除 RevertAll 挂起 Assert。
Assert 对于未授予的权限忽略,因为对该权限的需求不会成功。 但是,如果调用堆栈Demand上的代码较低,则当堆栈演练到达尝试调用Assert的代码时,将引发一个SecurityException代码。 发生这种情况是因为调用 Assert 的代码尚未授予权限,即使它尝试访问 Assert 它也是如此。
注意
由于调用 Assert 消除了调用链中所有代码必须授予访问指定资源的权限的要求,因此,如果错误或不当使用,它可以打开安全漏洞。 因此,应谨慎使用。