Хороший вопрос наверняка. Я запустил код и тоже немного озадачен.
Я просто провожу час или два, изучая документы и прибегая к помощи, но безрезультатно. Обратите внимание, что MSDN справляется, выполняя требование по утверждению.
Редактировать: ответ бинарного кодера указал мне правильное направление.
Права на Asserion просто не действительны в сборке с полным толчком. Только если вы добавите в начало файла следующее:
[assembly: SecurityPermissionAttribute(SecurityAction.RequestRefuse, Assertion = true)]
вызов fileIo.Assert () не удастся.
Но в противном случае попытка отклонить () разрешение Assertion и следующий атрибут совершенно неэффективны (если вы явно не потребуете () права Assertion).
[SecurityPermissionAttribute(SecurityAction.Deny, Assertion = true)]
private static void ReadFileSystem() {}
В документации действительно говорится, что Assert () «имеет некоторые проблемы с безопасностью», и рекомендуется всегда требовать до утверждения:
fileIo.Demand();
fileIo.Assert();
но мне все еще нужно изменить свое мышление относительно применения принципа наименьших привилегий.