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.Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

public:
 virtual void PermitOnly();
public:
 void PermitOnly();
public void PermitOnly ();
[System.Diagnostics.Conditional("FEATURE_MONO_CAS")]
public void PermitOnly ();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
[<System.Diagnostics.Conditional("FEATURE_MONO_CAS")>]
member this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

Implementaciones

Atributos

Excepciones

Ya hay una PermitOnly() activa para el marco actual.There is already an active PermitOnly() for the current frame.

Comentarios

Importante

El PermitOnly método solo debe usarse para proteger los recursos contra el acceso accidental por código de plena confianza.The PermitOnly method should be used only to protect resources from accidental access by fully trusted code. No debe usarse para proteger los recursos de un uso incorrecto intencionado por parte de código que no es de confianza.It should not be used to protect resources from intentional misuse by untrusted code. Por ejemplo, si A el método emite un PermitOnly para un permiso y, a continuación, llama al método B , B el método puede invalidar de forma abierta mediante la emisión de PermitOnly un Assert .For example, if method A issues a PermitOnly for a permission and then calls method B, method B can overtly override the PermitOnly by issuing an Assert. El método al que se llama siempre está más arriba en la pila.The called method is always higher in the stack. Por lo tanto, si B el método intenta tener acceso a un recurso protegido, el sistema de seguridad comienza a comprobar los permisos con él porque B el método es el llamador inmediato y, a continuación, recorre la pila para confirmar que no hay ninguna o una posición Deny PermitOnly inferior en la pila.Therefore, if method B tries to access a protected resource, the security system begins checking for permissions with it because method B is the immediate caller, and then walks down the stack to confirm that there is no Deny or PermitOnly lower in the stack. El método B , que intenta tener acceso al recurso, puede detener el recorrido de la pila inmediatamente mediante el Assert método.Method B, which is trying to access the resource, can stop the stack walk immediately by using the Assert method. En ese caso, PermitOnly nunca se detecta la colocada en la pila mediante el método A (el método de llamada).In that case, the PermitOnly placed on the stack by method A (the calling method) is never discovered.

PermitOnly es similar a Deny , en tanto que los recorridos de la pila producen errores cuando, de lo contrario, se realizan correctamente.PermitOnly is similar to Deny, in that both cause stack walks to fail when they would otherwise succeed. La diferencia es que Deny especifica 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.The difference is that Deny specifies permissions that will cause the stack walk to fail, but PermitOnly specifies the only permissions that do not cause the stack walk to fail.

Llame a este método para asegurarse de que el código se puede utilizar para tener acceso solo a los recursos especificados.Call this method to ensure that your code can be used to access only the specified resources. La llamada a PermitOnly es efectiva hasta que el código de llamada vuelve a su llamador.The call to PermitOnly is effective until the calling code returns to its caller. Solo una PermitOnly puede estar activa en un marco.Only one PermitOnly can be active on a frame. Un intento de llamar a PermitOnly cuando existe un activo PermitOnly en el marco da como resultado un SecurityException .An attempt to call PermitOnly when an active PermitOnly exists on the frame results in a SecurityException. Llame a RevertPermitOnly o RevertAll para quitar un activo PermitOnly .Call RevertPermitOnly or RevertAll to remove an active PermitOnly.

PermitOnly se omite para un permiso no concedido porque una petición para ese permiso no se realizará correctamente.PermitOnly is ignored for a permission not granted because a demand for that permission will not succeed. Sin embargo, si el código inferior de la pila de llamadas llama posteriormente a Demand para ese permiso, SecurityException se produce una excepción cuando el recorrido de pila alcanza el código que intentó llamar a PermitOnly .However, if code lower on the call stack later calls Demand for that permission, a SecurityException is thrown when the stack walk reaches the code that tried to call PermitOnly. Esto se debe a que el código al que llamó PermitOnly no tiene el permiso, aunque se le llamó PermitOnly para ese permiso.This is because the code that called PermitOnly has not been granted the permission, even though it called PermitOnly for that permission. Normalmente, la pila de llamadas se representa como en constante crecimiento, de modo que los métodos situados más arriba en la pila de llamadas llamen a los métodos situados más abajo en la pila de llamadas.The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack.

Notas a los desarrolladores de herederos

No se puede invalidar este método.You cannot override this method.

Se aplica a