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

Método CodeAccessPermission.PermitOnly ()

 

Publicado: octubre de 2016

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.

Espacio de nombres:   System.Security
Ensamblado:  mscorlib (en mscorlib.dll)

Public Sub PermitOnly

Exception Condition
SecurityException

Ya hay una PermitOnly activa para el fotograma actual.

System_CAPS_importantImportante

El PermitOnly método debe utilizarse solo para proteger los recursos de acceso accidental por código de plena confianza. No se debe usar para proteger los recursos de uso indebido intencionado por código no confiable. Por ejemplo, si método A problemas un PermitOnly para un permiso y, a continuación, llama a un método B, método B puede invalidar abiertamente la PermitOnly emitiendo un Assert. El método llamado siempre es superior en la pila. Por lo tanto, si (método) B intenta tener acceso a un recurso protegido, el sistema de seguridad comienza a comprobar los permisos con él porque (método) B es el llamador inmediato y, a continuación, los recorridos de abajo en la pila para confirmar que no hay ningún Deny o PermitOnly abajo en la pila. Método B, que está intentando tener acceso al recurso, puede detener el recorrido de pila inmediatamente mediante el Assert método. En ese caso, el PermitOnly colocados en la pila mediante el método A (el método de llamada) nunca se ha detectado.

PermitOnly es similar a Deny, ya que ambos originan recorridos de pila producirá un error cuando lo contrario realizaría correctamente. La diferencia es que Deny especifica los permisos que hará que el recorrido de pila producirá un error, pero PermitOnly especifica los permisos que hacen que el recorrido de pila producirá un error.

Llamar a este método para asegurarse de que el código puede utilizarse para tener acceso sólo a los recursos especificados. La llamada a PermitOnly es eficaz hasta que el código de llamada vuelve al llamador. Solo PermitOnly puede estar activo en un marco. Un intento de llamar a PermitOnly cuando se activa una PermitOnly existe en el marco da como resultado un SecurityException. Llame a RevertPermitOnly o RevertAll para quitar un activo PermitOnly.

PermitOnly se omite para un permiso no concedido ya que no se realizará correctamente una demanda para ese permiso. Sin embargo, si la pila de código situado más abajo en la llamada llamadas Demand para ese permiso, un SecurityException se produce cuando el recorrido de pila alcanza el código que intentó llamar a PermitOnly. Esto es porque el código que llamó PermitOnly no dispone del permiso, aunque haya llamado a PermitOnly para ese permiso. La pila de llamadas suele representarse de forma decreciente, por lo que más arriba en la pila de llamadas de métodos llaman a métodos inferiores en la pila de llamadas.

Notas para desarrolladores de herederos:

No se puede reemplazar este método.

.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: