CodeAccessPermission.PermitOnly Método

Definición

Impide que los autores de llamadas más altos en la pila de llamadas usen el código que llama a este método para acceder a todos los recursos, excepto para el 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 un activo PermitOnly() para el marco actual.

Comentarios

Importante

El PermitOnly método solo debe usarse para proteger los recursos del acceso accidental mediante código de plena confianza. No debe usarse para proteger los recursos contra el uso indebido intencional 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 excesivamente mediante la PermitOnly emisión de un 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 autor de la llamada inmediato y, a continuación, recorre la pila para confirmar que no hay o PermitOnly menos Deny 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, nunca se detecta el PermitOnly elemento colocado en la pila por método A (el método que realiza la llamada).

PermitOnly es similar a Deny, en que ambas causas de que se produzca un error en los recorridos de pila cuando de lo contrario se realizarían 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 de 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 RevertPermitOnly a o RevertAll para quitar un 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 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 de 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