System.Security.CodeAccessPermission.Deny 方法

方法描述

防止调用堆栈中处于较高位置的调用方通过调用此方法的代码来访问由当前实例指定的资源。

语法定义(C# System.Security.CodeAccessPermission.Deny 方法 的用法)

[ObsoleteAttribute("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()

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
返回值 void

提示和注释

重要事项

Deny 方法只应用于防止完全信任代码意外访问资源。 不应将其用于防止不受信任的代码有意滥用资源。 例如,如果方法 A 对某权限发出 Deny,然后调用方法 B,则方法 B 可通过发出 Assert 而公开替代 Deny。 调用的方法通常位于堆栈中较高的位置。 因此,如果方法 B 尝试访问受保护的资源,则安全系统会开始检查该方法的权限(因为方法 B 是直接调用方),然后依次审核堆栈中的各项,以确认堆栈较低的位置没有 Deny 或 PermitOnly。 尝试访问资源的方法 B 可以通过使用 Assert 方法立即停止堆栈审核。 在这种情况下,永远不会发现方法 A(调用方法)在堆栈上放置的 Deny。

此方法防止调用堆栈中处于较高位置的调用方通过调用此方法的代码来访问受保护的资源(即使已向这些调用方授予访问该资源的权限)。 调用堆栈一般表示为缩小,以便调用堆栈中较高的方法可调用调用堆栈中较低的方法。

Deny 可限制程序员的责任或帮助防止出现意外的安全问题,原因是它可以防止他人使用可调用 Deny 的方法来访问由被拒绝的权限保护的资源。 如果某个方法针对权限调用 Deny,并且如果调用堆栈中的低级调用方调用了该权限的 Demand,则当安全检查到达 Deny 时将失败。

在调用代码返回到它的调用方之前,对 Deny 的调用一直有效。 一个帧上只能有一个活动的 Deny。 如果尝试在帧上存在活动 Deny 时调用 Deny,则会导致 SecurityException。 调用 RevertDeny 或 RevertAll 以移除活动的 Deny。 对未授予的权限忽略 Deny,因为对该权限的请求不会成功。

对继承者的说明

不能重写此方法。

System.Security.CodeAccessPermission.Deny 方法例子


异常

异常 异常描述
SecurityException 当前框架已经有一个活动的 Deny。

命名空间

namespace: System.Security

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:3.5、3.0、2.0、1.1、1.0 在 4 中过时(编译器警告) .NET Framework Client Profile 受以下版本支持:3.5 SP1 在 4 中过时(编译器警告)

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。