CodeAccessPermission.Deny 方法

定义

注意

现已弃用此 API。

注意

Deny is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

防止处于调用堆栈较高位置的调用函数使用可以调用此方法来访问当前实例指定资源的代码。

public:
 virtual void Deny();
[System.Obsolete]
public void Deny ();
public void Deny ();
[System.Obsolete("Deny is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public void Deny ();
[<System.Obsolete>]
abstract member Deny : unit -> unit
override this.Deny : unit -> unit
abstract member Deny : unit -> unit
override this.Deny : unit -> unit
[<System.Obsolete("Deny is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member Deny : unit -> unit
override this.Deny : unit -> unit
Public Sub Deny ()

实现

属性

例外

已存在一个用于当前帧的活动的 Deny()

注解

重要

方法 Deny 应仅用于防止完全受信任的代码意外访问资源。 它不应用于防止不受信任的代码故意滥用资源。 例如,如果 方法A为 权限颁发 Deny ,然后调用 方法 B,则 方法B可以通过发出 Assert来公开重写 Deny 。 被调用的方法在堆栈中始终较高。 因此,如果 方法 B 尝试访问受保护的资源,安全系统将开始检查其权限,因为方法 B 是直接调用方,然后向下浏览堆栈以确认堆栈中没有 DenyPermitOnly 更低。 尝试访问资源的方法 B可以使用 方法立即 Assert 停止堆栈遍走。 在这种情况下, Deny 永远不会发现按方法 A (调用方法) 放置在堆栈上的 。

此方法可防止调用堆栈中较高级别的调用方通过调用此方法的代码访问受保护资源,即使这些调用方已被授予访问它的权限。 调用堆栈通常表示为向下增长,因此调用堆栈中较高方法调用方法在调用堆栈中较低。

Deny 可以限制程序员的责任或帮助防止意外的安全问题,因为它有助于防止调用 Deny 的方法用于访问受拒绝权限保护的资源。 如果方法对权限调用 Deny ,并且Demand调用堆栈中较低层的调用方调用了该权限的 ,则当安全检查到达 Deny时将失败。

Deny 调用代码返回到调用方之前,对 的调用是有效的。 一个帧上只能有一个 Deny 处于活动状态。 当帧上存在活动Deny时,尝试调用 Deny 会导致 SecurityException。 调用 RevertDenyRevertAll 以删除活动的 DenyDeny 对于未授予的权限,将被忽略,因为该权限的需求不会成功。

继承者说明

不能重写此方法。

适用于