IStackWalk.Assert Метод

Определение

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

public:
 void Assert();
public void Assert ();
abstract member Assert : unit -> unit
Public Sub Assert ()

Исключения

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

Комментарии

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

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

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

Внимание!

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

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

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