Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Utilizar el método PermitOnly

Cuando se llama a PermitOnly se obtiene esencialmente el mismo efecto que cuando se llama a Deny, aunque es una manera distinta de especificar las condiciones en las que se pueden producir errores en la comprobación de seguridad. En lugar de indicar que no se puede obtener acceso a un recurso específico, tal como sucede con Deny, PermitOnly indica que sólo se puede obtener acceso a los recursos que se especifiquen. Por tanto, llamar a PermitOnly en el permiso X es igual que llamar a Deny en todos los permisos excepto el permiso X. Si llama a PermitOnly, el código se puede usar para tener acceso solo a los recursos protegidos por los permisos que especifica al llamar a PermitOnly. Se utiliza PermitOnly en lugar de Deny cuando es más conveniente describir los recursos a los que se puede obtener acceso en lugar de los recursos a los que no se puede obtener acceso.

Nota Nota

En .NET Framework 4, se ha quitado la compatibilidad con el runtime para exigir las solicitudes de permisos Deny, RequestMinimum, RequestOptional y RequestRefuse. Estas solicitudes no deben usarse en código basado en .NET Framework 4 o versiones posteriores. Para obtener más información sobre estos y otros cambios, vea Cambios de seguridad en .NET Framework.

Si el código llama a PermitOnly para el permiso P1 y, después, los llamadores indirectos solicitan el permiso P2, la llamada a PermitOnly influye en el resultado del recorrido de pila sólo si P1 y P2 son de tipos diferentes y si P2 no es un subconjunto de P1.

En los siguientes fragmentos de código se muestra una sintaxis declarativa para reemplazar las comprobaciones de seguridad con PermitOnly. Los llamadores no pueden utilizar este código para obtener acceso a los recursos protegidos, excepto los recursos de interfaz de usuario. .

using System;
using System.Security.Permissions;

public class MyClass
{
   public MyClass() {    
   }   
   
   [UIPermissionAttribute(SecurityAction.PermitOnly, Unrestricted=true)]
   public void ReadRegistry() { 
      //Access a UI resource.
   }  
}

En el siguiente ejemplo de código se muestra una sintaxis imperativa para reemplazar las comprobaciones de seguridad con el método PermitOnly. Se pasa al constructor UIPermission un objeto PermissionState que especifica los recursos de interfaz de usuario a los que se debe conceder acceso. Tras llamar al método PermitOnly, el código y todos los llamadores se pueden utilizar sólo para obtener acceso a los recursos de interfaz de usuario.

using System;
using System.Security.Permissions;

public class MyClass {
   public MyClass() {    
   }   
   public void ReadRegistry() { 
      UIPermission MyPermission = new UIPermission(PermissionState.Unrestricted);
      MyPermission.PermitOnly();
      //Access a UI resource.
   }  
}

Adiciones de comunidad

Mostrar: