CodeAccessPermission.PermitOnly Método

Definição

Impede que os chamadores no topo da pilha de chamadas usem o código que chama esse método para acessar todos os recursos, com exceção do recurso especificado pela instância atual.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 ()

Implementações

Atributos

Exceções

Já existe um PermitOnly() ativo para o quadro atual.There is already an active PermitOnly() for the current frame.

Comentários

Importante

O PermitOnly método deve ser usado somente para proteger recursos contra acesso acidental por código totalmente confiável.The PermitOnly method should be used only to protect resources from accidental access by fully trusted code. Ele não deve ser usado para proteger recursos de uso indevido intencional por código não confiável.It should not be used to protect resources from intentional misuse by untrusted code. Por exemplo, se A o método emitir um PermitOnly para uma permissão e, em seguida B , chamar o método, B o método poderá overtly substituir o PermitOnly emitindo um 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. O método chamado é sempre mais alto na pilha.The called method is always higher in the stack. Portanto, se B o método tentar acessar um recurso protegido, o sistema de segurança começará a verificar se há permissões com ele porque B o método é o chamador imediato e, em seguida, percorra a pilha para confirmar que não há Deny ou PermitOnly inferior na pilha.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. O método B , que está tentando acessar o recurso, pode parar a movimentação da pilha imediatamente usando o Assert método.Method B, which is trying to access the resource, can stop the stack walk immediately by using the Assert method. Nesse caso, o PermitOnly colocado no método Stack by A (o método de chamada) nunca é descoberto.In that case, the PermitOnly placed on the stack by method A (the calling method) is never discovered.

PermitOnly é semelhante a Deny , pois ambos fazem com que as movimentações de pilha falhem quando seriam bem-sucedidos.PermitOnly is similar to Deny, in that both cause stack walks to fail when they would otherwise succeed. A diferença é que Deny especifica as permissões que farão com que a movimentação da pilha falhe, mas PermitOnly especifica as únicas permissões que não fazem com que a movimentação da pilha falhe.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.

Chame esse método para garantir que seu código possa ser usado para acessar apenas os recursos especificados.Call this method to ensure that your code can be used to access only the specified resources. A chamada para entrará em PermitOnly vigor até que o código de chamada retorne ao seu chamador.The call to PermitOnly is effective until the calling code returns to its caller. Apenas um PermitOnly pode estar ativo em um quadro.Only one PermitOnly can be active on a frame. Uma tentativa de chamar PermitOnly quando um ativo PermitOnly existe no quadro resulta em um SecurityException .An attempt to call PermitOnly when an active PermitOnly exists on the frame results in a SecurityException. Chamar RevertPermitOnly ou RevertAll remover um ativo PermitOnly .Call RevertPermitOnly or RevertAll to remove an active PermitOnly.

PermitOnly é ignorado para uma permissão não concedida porque uma demanda por essa permissão não terá sucesso.PermitOnly is ignored for a permission not granted because a demand for that permission will not succeed. No entanto, se o código inferior na pilha de chamadas mais tarde chamar Demand essa permissão, um SecurityException será gerado quando a movimentação da pilha atingir o código que tentou chamar 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. Isso ocorre porque o código chamado PermitOnly não recebeu a permissão, embora ela tenha sido chamada PermitOnly para essa permissão.This is because the code that called PermitOnly has not been granted the permission, even though it called PermitOnly for that permission. A pilha de chamadas normalmente é representada como crescendo, para que os métodos mais altos nos métodos de chamada da pilha de chamadas sejam menores na pilha de chamadas.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 aos Herdeiros

Não é possível substituir esse método.You cannot override this method.

Aplica-se a