Поделиться через


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 может переопределить Deny , выдавая .Assert Вызываемый метод всегда находится выше в стеке. Таким образом, если метод B пытается получить доступ к защищенному ресурсу, система безопасности начинает проверку разрешений с его помощью, так как метод B является непосредственным вызывающим, а затем проходит по стеку, чтобы убедиться, что в стеке нет Deny или PermitOnly ниже. Метод B, который пытается получить доступ к ресурсу, может немедленно остановить обход стека с помощью Assert метода . В этом случае объект , помещенный Deny в стек по методу A (вызывающий метод), никогда не обнаруживается.

Этот метод не позволяет вызывающим лицам в стеке вызовов получить доступ к защищенному ресурсу с помощью кода, который вызывает этот метод, даже если этим вызывающим лицам предоставлено разрешение на доступ к нему. Стек вызовов обычно представлен как растущий вниз, поэтому методы выше в стеке вызовов вызывают методы ниже в стеке вызовов.

Deny может ограничить ответственность программиста или предотвратить случайные проблемы безопасности, так как это помогает предотвратить использование метода, вызываемого Deny для доступа к ресурсу, защищенному отклоненным разрешением. Если метод вызывает Deny разрешение и если Demand для этого разрешения вызывается вызывающей стороной ниже в стеке вызовов, эта проверка безопасности завершится ошибкой при достижении Deny.

Вызов действует до Deny тех пор, пока вызывающий код не вернется в вызывающий объект. Только один может Deny быть активным в кадре. При попытке вызвать Deny , если в кадре существует активный Deny объект , возникает SecurityExceptionисключение . Вызовите RevertDeny или RevertAll , чтобы удалить активный Denyобъект . Deny игнорируется для разрешения, которое не предоставлено, так как запрос на это разрешение не будет выполнен.

Примечания для тех, кто наследует этот метод

Этот метод нельзя переопределить.

Применяется к