CodeAccessPermission.PermitOnly Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Impede que os chamadores mais acima na pilha de chamadas usem o código que chama este método para aceder a todos os recursos, exceto ao recurso especificado pela instância atual.
public:
virtual void PermitOnly();
public void PermitOnly();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()
Implementações
Exceções
Já existe um ativo PermitOnly() para o frame atual.
Observações
Importante
O PermitOnly método deve ser usado apenas para proteger recursos de acessos acidentais por código totalmente confiável. Não deve ser usado para proteger recursos de um uso indevido intencional por código não confiável. Por exemplo, se o método A emite um PermitOnly para uma permissão e depois chama o método B, o método B pode sobrepor abertamente o PermitOnly ao emitir um Assert. O método chamado está sempre mais alto na pilha. Portanto, se o método B tentar aceder a um recurso protegido, o sistema de segurança começa a verificar permissões com ele porque o método B é o chamador imediato, e depois percorre a pilha para confirmar se não Deny existe ou PermitOnly se está inferior na pilha. O método B, que tenta aceder ao recurso, pode parar imediatamente a caminhada da pilha usando o Assert método. Nesse caso, o PermitOnly método colocado na pilha por A método (o método que chama) nunca é descoberto.
PermitOnly é semelhante a Deny, no sentido em que ambos fazem com que as caminhadas de pilha falhem quando, de outra forma, teriam sucesso. A diferença é que Deny especifica permissões que farão a caminhada da pilha falhar, mas PermitOnly especifica as únicas permissões que não causam a falha da caminhada da pilha.
Chame este método para garantir que o seu código pode ser usado apenas para aceder aos recursos especificados. A chamada para PermitOnly é eficaz até que o código de chamada regresse ao seu chamador. Só um PermitOnly pode estar ativo num frame. Uma tentativa de chamar PermitOnly quando existe um ativo PermitOnly na trama resulta num SecurityException. Ligue RevertPermitOnly ou RevertAll remova um arquivo ativo PermitOnly.
PermitOnly é ignorado por uma permissão não concedida porque a exigência dessa autorização não terá sucesso. No entanto, se o código mais abaixo na pilha de chamadas mais tarde pedir Demand essa permissão, a SecurityException é lançado quando a caminhada da pilha chega ao código que tentou chamar PermitOnly. Isto acontece porque o código que ligou PermitOnly não recebeu essa permissão, apesar de ter pedido PermitOnly essa autorização. A pilha de chamadas é tipicamente representada como a crescer para baixo, de modo que os métodos mais altos na pilha de chamadas chamam métodos mais baixos na pilha de chamadas.
Notas para Herdeiros
Não podes anular este método.