CodeAccessPermission.Assert CodeAccessPermission.Assert CodeAccessPermission.Assert CodeAccessPermission.Assert Method

Определение

Объявляет, что вызывающий код может получить доступ к ресурсу, защищенному требованием разрешения, через код, вызывающий этот метод, даже если вызывающим объектам выше в стеке вызовов не предоставлено разрешение на доступ к ресурсу.Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Assert() может вызвать проблемы системы безопасности.Using Assert() can create security issues.

public:
 void Assert();
[System.Diagnostics.Conditional("FEATURE_MONO_CAS")]
public void Assert ();
member this.Assert : unit -> unit
Public Sub Assert ()

Реализации

Исключения

У вызывающего кода отсутствует Assertion.The calling code does not have Assertion.

- или --or- Уже имеется активное утверждение Assert() для текущего кадра.There is already an active Assert() for the current frame.

Комментарии

Стек вызовов обычно представляется как увеличивающийся, поэтому методы, набольшиеся в методах вызова стека вызовов, располагаются ниже в стеке вызовов.The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack. Вызов Assert предотвращает выполнение прохода стека, который находится ниже в стеке вызовов, после того, как код, вызывающий этот метод, выходит из стека вызовов.Calling Assert prevents a stack walk originating lower in the call stack from proceeding up the call stack beyond the code that calls this method. Таким образом, даже если вызывающим объектам выше в стеке вызовов нет необходимых разрешений для доступа к ресурсу, они по-прежнему могут обращаться к нему через код, который вызывает этот метод для необходимого разрешения.Therefore, even if callers higher on the call stack do not have the requisite permissions to access a resource, they can still access it through the code that calls this method on the necessary permission. Утверждение вступает в силу только в том случае, если код Assert , вызывающий, передает проверку безопасности для разрешения, которое он утверждает.An assertion is effective only if the code that calls Assert passes the security check for the permission that it is asserting.

Вызов вступает в Assert силу до тех пор, пока вызывающий код не вернется в вызывающий объект.The call to Assert is effective until the calling code returns to its caller. Только один Assert может быть активным в кадре.Only one Assert can be active on a frame. Попытка вызвать Assert , когда активная Assert существует в кадре, приведет к SecurityException.An attempt to call Assert when an active Assert exists on the frame results in a SecurityException. RevertAssert Вызовите RevertAll или, чтобы удалить Assertактивный.Call RevertAssert or RevertAll to remove an active Assert.

Assertне учитывается для разрешения, которое не предоставлено, так как запрос на это разрешение не будет выполнен.Assert is ignored for a permission not granted because a demand for that permission will not succeed. Однако если в коде ниже вызовов Demand стека вызовов для этого разрешения SecurityException , то при достижении проходом стека кода, который пытался вызвать Assert, возникает исключение.However, if code lower on the call stack calls Demand for that permission, a SecurityException is thrown when the stack walk reaches the code that tried to call Assert. Это происходит потому, что вызывающему Assert коду не было предоставлено разрешение, несмотря на то, что Assert он пытался выполнить его.This happens because the code that called Assert has not been granted the permission, even though it tried to Assert it.

Внимание!

Поскольку вызов Assert устраняет необходимость предоставления всем коду в цепочке вызовов разрешения на доступ к указанному ресурсу, он может открыть проблемы безопасности при неправильном или ненадлежащем использовании.Because calling Assert removes the requirement that all code in the call chain must be granted permission to access the specified resource, it can open up security issues if used incorrectly or inappropriately. Поэтому его следует использовать с большой осторожностью.Therefore, it should be used with great caution.

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

Этот метод нельзя переопределить.You cannot override this method.

Безопасность

SecurityPermission
для возможности вызова Assert().for the ability to call Assert(). Связанное перечисление:AssertionAssociated enumeration: Assertion

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

Дополнительно