2011-11-25 25 views
14

Recibí la siguiente advertencia de compilación como un error al actualizar algunos códigos ASP.NET de .NET 3.5: 'System.Security.Permissions.SecurityAction.RequestMinimum' está obsoleto.¿Cómo se soluciona el "error de compilación" 'System.Security.Permissions.SecurityAction.RequestMinimum' obsoleto '?

El atributo tiene abeja aplicado en el nivel assebly:

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

también el código hace uso de la P P & Web Client Software Factory, especificamente la biblioteca ObjectBuilder.WCSFExtensions. También es el código el que proporciona algunas implementaciones del proveedor de roles.

Tenga en cuenta que este código se usa como código de Framework en otros proyectos, por lo que es difícil determinar qué requisitos de seguridad pueden existir.


Así que la pregunta es dolar milones:

¿Qué valor tiene que ser utilizado para el "System.Security.Permissions.SecurityAction" enumeración?

¿Existe un mejor enfoque para aplicar este atributo de seguridad?

Respuesta

13

¿Ha leído la advertencia del compilador completo o visite el enlace que incluye? El CLR "desnudo" ya no restringe los permisos de CAS bajo .NET 4.0 a menos que active un interruptor de "modo heredado", por lo que no hay reemplazo para su uso de RequestMinimum. El SecurityPermissionAttribute de nivel de ensamblaje debe eliminarse, no modificarse.

Para obtener una explicación más completa de los cambios CAS 4.0 que aparecen en MSDN, consulte http://blogs.msdn.com/b/shawnfa/archive/2009/05/21/security-policy-in-the-v4-clr.aspx y http://blogs.msdn.com/b/shawnfa/archive/2010/02/24/so-is-cas-dead-in-net-4-or-what.aspx.

+0

Gracias Nicole, los artículos que mencionaste proporcionan un trasfondo más claro que la documentación de MSDN (que fue exhaustiva, pero no dio ninguna declaración explícita/obvia que diga: eliminar el atributo). No estaba seguro de cuáles serían las implicaciones para eliminar el atributo. Al final opté por dejar ese código en 3.5 por ahora. – Schalk

+0

Un RequestMinimum de nivel de ensamblaje simplemente indica al host que no cargue el ensamblaje si no se le otorga el permiso especificado. Un permiso RequestMinimum for execution es casi inútil de todos modos, ya que el host no ejecutará ningún código en el ensamblado a menos que tenga permiso de ejecución. La única diferencia en el comportamiento del tiempo de ejecución cuando no se concede el permiso son los detalles de la excepción y cuándo se lanza. Sin embargo, independientemente de si el atributo está presente o no, verá una excepción antes de que se ejecute cualquier código en el ensamblaje. –

Cuestiones relacionadas