Как исправить ошибку "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

Кажется, проблема заключается в том, что декларативная безопасность уровня сборки в целом была отмечена как устаревшая. Возможно, вы можете применить это на уровне метода вместо этого?