CodeAccessPermission.Deny 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
注意
现已弃用此 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();
public:
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.Diagnostics.Conditional("FEATURE_MONO_CAS")]
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
[<System.Diagnostics.Conditional("FEATURE_MONO_CAS")>]
member this.Deny : unit -> unit
Public Sub Deny ()
实现
- 属性
例外
已存在一个用于当前帧的活动的 Deny()。
注解
重要
此方法 Deny 应仅用于保护资源免受完全信任代码意外访问。 不应使用它来保护资源免受不受信任的代码的故意滥用。 例如,如果方法A
发出Deny权限,然后调用方法B
,则方法B
可以通过发出方法Assert来公开重写Deny该方法。 调用的方法在堆栈中始终较高。 因此,如果方法 B
尝试访问受保护的资源,则安全系统开始检查其权限,因为方法 B
是直接调用方,然后向下走下堆栈以确认堆栈中没有 Deny 或 PermitOnly 更低。 尝试访问资源的方法 B
可以使用该方法 Assert 立即停止堆栈演练。 在这种情况下, Deny 永远不会发现调用方法) 的方法 A
(堆栈上放置的方法。
此方法可防止调用堆栈中较高级别的调用方通过调用此方法的代码访问受保护资源,即使这些调用方已被授予访问此方法的权限。 调用堆栈通常表示为向下增长,因此调用堆栈调用方法中的方法在调用堆栈中较低。
Deny 可以限制程序员的责任或帮助防止意外安全问题,因为它有助于防止调用 Deny 的方法用于访问受拒绝权限保护的资源。 如果方法对权限进行调用 Deny ,并且 Demand 调用堆栈中较低调用方调用了该权限,则到达 Deny该权限时,该安全检查将失败。
调用 Deny 生效,直到调用代码返回到调用方。 帧上只能有一个 Deny 活动状态。 当帧上存在活动Deny时尝试调用Deny会导致出现 SecurityException。 调用 RevertDeny 或删除 RevertAll 活动 Deny。 Deny 对于未授予的权限忽略,因为对该权限的需求不会成功。
继承者说明
不能重写此方法。