Как исправить ошибку компиляции "System.Security.Permissions.SecurityAction.RequestMinimum" устарела?
При обновлении некоторого кода ASP.NET из.NET 3.5 я получил следующее предупреждение компиляции: "System.Security.Permissions.SecurityAction.RequestMinimum" устарел.
Атрибут применяется на уровне сборки:
[assembly: System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.RequestMinimum, Execution=true)]
Также в коде используется фабрика программного обеспечения веб-клиента P&P, в частности библиотека ObjectBuilder.WCSFExtensions. Кроме того, этот код предоставляет некоторые реализации поставщика ролей.
Имейте в виду, что этот код используется в качестве кода Framework в других проектах, поэтому трудно определить, какие могут быть требования безопасности.
Итак, вопрос milion dolar:
Какое значение необходимо использовать для перечисления System.Security.Permissions.SecurityAction?
В качестве альтернативы, есть ли лучший подход к применению этого атрибута безопасности?
2 ответа
Вы прочитали полное предупреждение компилятора или посетили ссылку, которая в нем содержится? "Голый" CLR больше не ограничивает разрешения CAS в.NET 4.0, если вы не переключите переключатель "унаследованного режима", поэтому замена для RequestMinimum не заменяется. Атрибут SecurityPermissionAttribute уровня сборки должен быть удален, а не изменен.
Более подробное объяснение изменений в CAS 4.0, которые появляются в MSDN, см. По http://blogs.msdn.com/b/shawnfa/archive/2009/05/21/security-policy-in-the-v4-clr.aspx и http://blogs.msdn.com/b/shawnfa/archive/2010/02/24/so-is-cas-dead-in-net-4-or-what.aspx.
http://msdn.microsoft.com/en-us/library/ee471421.aspx
Кажется, проблема в том, что декларативная безопасность на уровне сборки в целом была помечена как устаревшая. Возможно, вы можете применить это на уровне метода вместо этого?