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
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 método PermitOnly 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 o método A emitir uma PermitOnly para uma permissão e, em seguida, chamar o método B, o método B poderá 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 o método B tentar acessar um recurso protegido, o sistema de segurança começará a verificar se há permissões com ele porque o método B é o chamador imediato e, em seguida, percorre a pilha para confirmar se 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 método Assert.Method B, which is trying to access the resource, can stop the stack walk immediately by using the Assert method. Nesse caso, os PermitOnly colocados na pilha por método A (o método de chamada) nunca são descobertos.In that case, the PermitOnly placed on the stack by method A (the calling method) is never discovered.

o PermitOnly é semelhante ao Deny, pois ambos fazem com que as movimentações de pilha falhem quando poderiam ser 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 PermitOnly entrará em 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. Somente um PermitOnly pode estar ativo em um quadro.Only one PermitOnly can be active on a frame. Uma tentativa de chamar PermitOnly quando existe uma PermitOnly ativa no quadro resulta em uma SecurityException.An attempt to call PermitOnly when an active PermitOnly exists on the frame results in a SecurityException. Chame RevertPermitOnly ou RevertAll para remover um PermitOnlyativo.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 mais baixo na pilha de chamadas mais tarde chamar Demand para 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 que chamou PermitOnly não recebeu a permissão, embora ela tenha chamado 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