Прочитать на английском

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


CodeAccessPermission.Assert Метод

Определение

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

public void Assert();

Реализации

Исключения

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

-или-

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

Комментарии

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

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

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

Внимание!

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

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

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

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

Продукт Версии
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1 (package-provided), 4.7.1, 4.7.2 (package-provided), 4.7.2, 4.8 (package-provided), 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

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