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 игнорируется для разрешения, которое не предоставлено, так как запрос на это разрешение не будет выполнен.
Примечания для тех, кто наследует этот метод
Этот метод нельзя переопределить.