Чтобы проверить, имеет ли код разрешение на доступ к ресурсу или на выполнение операции, общеязыковая среда выполнения CLR проверяет все вызывающие программы из стекового фрейма с целью убедиться, предоставлено ли запрошенное разрешение каждои сборке, имеющей метод в стеке. И если у какой-либо вызывающей программы из стека нет требуемого разрешения, то запускается исключение SecurityException.
Код, имеющий меньшую степень доверия, не может использовать проверенный код для выполнения несанкционированного действия. Процедуры в стеке могут принадлежать разным сборкам, имеющим разные наборы разрешений. Например, у созданной вами сборки могут быть все права, но ее может вызывать загруженный по сети компонент, права которого вы бы хотели ограничить (чтобы он не смог открыть вашу книгу адресов электронной почты).
Из следующих разделов вы узнаете, что с помощью методов Deny (Запретить) или Assert (Утвердить) базового класса CodeAccessPermission можно изменить результаты, полученные при просмотре стека.