Как можно исправить ошибку компиляции «System.Security.Permissions.SecurityAction.RequestMinimum» устарела? - PullRequest
14 голосов
/ 25 ноября 2011

Я получил следующее предупреждение компиляции как ошибку при обновлении некоторого кода 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 ]

14 голосов
/ 25 ноября 2011

Читали ли вы полное предупреждение компилятора или заходили по включенной в него ссылке? «Голый» 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.

0 голосов
/ 25 ноября 2011

http://msdn.microsoft.com/en-us/library/ee471421.aspx

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

...