CodeAccessPermission.Assert Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному запросом разрешений, с помощью кода, вызывающего этот метод, даже если вызывающие элементы в стеке не были предоставлены разрешения на доступ к ресурсу. Использование Assert() может создавать проблемы безопасности.
public:
virtual void Assert();
public void Assert();
abstract member Assert : unit -> unit
override this.Assert : unit -> unit
Public Sub Assert ()
Реализации
Исключения
Комментарии
Стек вызовов обычно представлен как растущий, так что методы выше в методах вызова стека вызовов ниже в стеке вызовов. Вызов Assert предотвращает переход стека, который происходит ниже в стеке вызовов, чтобы продолжить стек вызовов за пределами кода, вызывающего этот метод. Таким образом, даже если вызывающие пользователи выше в стеке вызовов не имеют необходимых разрешений для доступа к ресурсу, они по-прежнему могут получить доступ к нему с помощью кода, вызывающего этот метод по необходимому разрешению. Утверждение действует только в том случае, если код, который вызывает Assert проверку безопасности, для разрешения, которое оно утверждает.
Вызов Assert действует до тех пор, пока вызывающий код не возвращается вызывающей объекту. Только один Assert может быть активным в кадре. Попытка вызвать Assert , когда активная Assert функция существует в кадре, приводит к ошибке SecurityException. Вызов RevertAssert или RevertAll удаление активного Assert.
Assert игнорируется для разрешения, не предоставленного, так как запрос на это разрешение не будет выполнено. Однако если код ниже в стеке вызовов этого разрешения, Demand возникает, когда пошаговые инструкции SecurityException по стеку достигают кода, который пытался вызватьAssert. Это происходит из-за того, что код, который вызывается Assert , не был предоставлен разрешение, несмотря на попытку Assert .
Предостережение
Так как вызов Assert удаляет требование, что весь код в цепочке вызовов должен быть предоставлен разрешение на доступ к указанному ресурсу, он может открывать проблемы безопасности, если они используются неправильно или неправильно. Поэтому его следует использовать с большой осторожностью.
Примечания для тех, кто наследует этот метод
Этот метод нельзя переопределить.