Как исправить ошибку "System.Security.Permissions.SecurityAction.RequestMinimum" является устаревшей ошибкой компиляции?
Я получил следующее предупреждение компиляции как ошибку при обновлении кода ASP.NET с .NET 3.5:
'System.Security.Permissions.SecurityAction.RequestMinimum' устарел.
Атрибут применяется на уровне assebly:
[assembly: System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.RequestMinimum, Execution=true)]
Также в коде используется программное обеспечение P & P Web Client Factory, в частности библиотека ObjectBuilder.WCSFExtensions.
Кроме того, этот код предоставляет некоторые реализации поставщика ролей.
Имейте в виду, что этот код используется как код Framework в других проектах, поэтому трудно определить, какие требования безопасности там могут быть.
Итак, вопрос milion dolar:
Какое значение необходимо использовать для перечисления "System.Security.Permissions.SecurityAction"?
В качестве альтернативы существует ли лучший подход к применению этого атрибута безопасности?
Ответы
Ответ 1
Вы прочитали полное предупреждение о компиляторе или перешли по ссылке, которую он включает? "Голый" CLR больше не ограничивает разрешения CAS в .NET 4.0, если вы не переключаете переключатель "устаревший режим", поэтому нет замены для вашего использования RequestMinimum. Атрибут SecurityPermissionAttribute на уровне сборки должен быть удален, а не изменен.
Для более полного объяснения изменений 4.0 CAS, чем указано в 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.
Ответ 2
http://msdn.microsoft.com/en-us/library/ee471421.aspx
Кажется, проблема заключается в том, что декларативная безопасность уровня сборки в целом была отмечена как устаревшая. Возможно, вы можете применить это на уровне метода вместо этого?