Comparteix a través de


CodeAccessPermission.PermitOnly Método

Definición

Impide que los llamadores situados más arriba en la pila de llamadas usen el código que llama a este método para tener acceso a todos los recursos excepto al recurso especificado por la instancia actual.

public:
 virtual void PermitOnly();
public void PermitOnly ();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

Implementaciones

Excepciones

Ya hay una PermitOnly() activa para el marco actual.

Comentarios

Importante

El PermitOnly método solo se debe usar para proteger los recursos del acceso accidental mediante código de plena confianza. No se debe usar para proteger los recursos contra el uso indebido intencionado por código que no es de confianza. Por ejemplo, si el método A emite un PermitOnly para un permiso y, a continuación, llama al método B, el método B puede invalidar de forma excesiva el mediante la PermitOnly emisión de .Assert El método llamado siempre es mayor en la pila. Por lo tanto, si el método B intenta acceder a un recurso protegido, el sistema de seguridad comienza a comprobar los permisos con él porque el método B es el llamador inmediato y, a continuación, recorre la pila para confirmar que no hay ninguna Deny o PermitOnly inferior en la pila. El método B, que intenta acceder al recurso, puede detener el recorrido de la pila inmediatamente mediante el Assert método . En ese caso, el PermitOnly elemento colocado en la pila por método (el método A que realiza la llamada) nunca se detecta.

PermitOnly es similar a Deny, en que ambos hacen que se produzca un error en los recorridos de pila cuando, de lo contrario, se realizarán correctamente. La diferencia es que Deny especifica los permisos que harán que se produzca un error en el recorrido de la pila, pero PermitOnly especifica los únicos permisos que no hacen que se produzca un error en el recorrido de la pila.

Llame a este método para asegurarse de que el código se puede usar para acceder solo a los recursos especificados. La llamada a PermitOnly es efectiva hasta que el código que realiza la llamada vuelve a su llamador. Solo uno PermitOnly puede estar activo en un marco. Un intento de llamar PermitOnly cuando existe un activo PermitOnly en el marco da como resultado un SecurityException. Llame a RevertPermitOnly o RevertAll para quitar un objeto activo PermitOnly.

PermitOnly se omite para un permiso no concedido porque una demanda de ese permiso no se realizará correctamente. Sin embargo, si el código inferior en la pila de llamadas llama Demand posteriormente a para ese permiso, se produce una SecurityException excepción cuando el recorrido de la pila alcanza el código que intentó llamar PermitOnlya . Esto se debe a que el código al que se llamó PermitOnly no se ha concedido el permiso, aunque llamó PermitOnly para ese permiso. Normalmente, la pila de llamadas se representa como creciente, por lo que los métodos más altos en los métodos de llamada a la pila de llamadas se reducen en la pila de llamadas.

Notas a los desarrolladores de herederos

No se puede invalidar este método.

Se aplica a