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


CodeAccessPermission.Assert Метод

Определение

Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному требованием разрешения, через код, вызывающий этот метод, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу. Assert() может вызвать проблемы системы безопасности.

public:
 virtual void Assert();
public void Assert ();
abstract member Assert : unit -> unit
override this.Assert : unit -> unit
Public Sub Assert ()

Реализации

Исключения

У вызывающего кода отсутствует Assertion.

-или-

Уже имеется активное утверждение Assert() для текущего кадра.

Комментарии

Стек вызовов обычно представлен как растущий вниз, поэтому методы выше в стеке вызовов вызывают методы ниже в стеке вызовов. Вызов Assert предотвращает переход стека ниже в стеке вызовов за пределы кода, который вызывает этот метод. Таким образом, даже если вызывающие элементы выше в стеке вызовов не имеют необходимых разрешений для доступа к ресурсу, они по-прежнему могут получить к нему доступ с помощью кода, который вызывает этот метод с необходимым разрешением. Утверждение действует только в том случае, если код, вызывающийAssert, передает проверка безопасности для разрешения, которое он утверждает.

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

Assert Игнорируется для разрешения, которое не предоставлено, так как запрос на это разрешение не будет выполнен. Однако если код ниже в стеке вызовов вызывает Demand это разрешение, SecurityException возникает, когда пошаговое руководство по стеку достигает кода, который пытался вызвать Assert. Это происходит из-за того, что коду, который вызвал Assert , не было предоставлено разрешение, несмотря на то, что он пытался выполнить Assert его.

Внимание!

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

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

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

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

См. также раздел