2011-11-25 332 views
14

从.NET 3.5升级某些ASP.NET代码时,我收到了以下编译警告错误: 'System.Security.Permissions.SecurityAction.RequestMinimum'已过时。如何修复“'System.Security.Permissions.SecurityAction.RequestMinimum'已过时”的编译错误?

属性具有应用在assebly水平蜜蜂:

[assembly: System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.RequestMinimum, Execution=true)] 

而且该代码使用在P & P的Web客户端软件工厂,specificly的ObjectBuilder.WCSFExtensions库。另外它的代码提供了一些角色提供者实现。

请记住,此代码在其他项目中用作框架代码,因此很难确定可能存在哪些安全需求。


所以畅想DOLAR问题是:需要被用于 “System.Security.Permissions.SecurityAction” 枚举

什么样的价值?

另外还有更好的方法来应用此安全属性?

回答

13

您是否阅读过完整的编译器警告或访问它包含的链接?除非您翻转“传统模式”开关,否则“裸”CLR不再限制.NET 4.0下的CAS权限,因此不会取代您的RequestMinimum使用。程序集级SecurityPermissionAttribute应该被删除,而不是修改。

有关4.0 CAS更改的更多完整说明,请参见http://blogs.msdn.com/b/shawnfa/archive/2009/05/21/security-policy-in-the-v4-clr.aspxhttp://blogs.msdn.com/b/shawnfa/archive/2010/02/24/so-is-cas-dead-in-net-4-or-what.aspx

+0

感谢妮可,你提到的文章比MSDN文档(这是全面的,但没有给出明确/明显的说法:删除属性)提供了更清晰的背景。我不确定删除属性会带来什么影响。最后,我选择暂时将代码保留为3.5。 – Schalk

+0

程序集级RequestMinimum只是指示主机在未授予指定权限的情况下不加载程序集。由于主机不会在程序集中运行任何代码,除非它具有执行权限,否则执行权限的RequestMinimum几乎毫无用处。在未授予权限时,运行时行为的唯一区别是异常的详细信息以及何时抛出。但是,无论该属性是否存在,您在执行程序集中的任何代码之前都会看到异常。 –