Condividi tramite


CodeAccessPermission.PermitOnly Metodo

Definizione

Impedisce ai chiamanti in posizione più elevata nello stack di chiamate di usare il codice che chiama questo metodo per accedere a tutte le risorse eccetto quella specificata dall'istanza corrente.

public:
 virtual void PermitOnly();
public void PermitOnly ();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

Implementazioni

Eccezioni

Esiste già un oggetto PermitOnly() attivo per il fotogramma corrente.

Commenti

Importante

Il PermitOnly metodo deve essere usato solo per proteggere le risorse dall'accesso accidentale tramite codice completamente attendibile. Non deve essere usato per proteggere le risorse da uso improprio intenzionale dal codice non attendibile. Ad esempio, se il metodo A genera un'autorizzazione PermitOnly e quindi chiama il metodo , il metodo BB può sovrascrivere l'oggetto PermitOnly emettendo un Assertoggetto . Il metodo chiamato è sempre più alto nello stack. Pertanto, se il metodo B tenta di accedere a una risorsa protetta, il sistema di sicurezza inizia a controllare le autorizzazioni con esso perché il metodo B è il chiamante immediato e quindi illustra lo stack per confermare che non Deny esiste o PermitOnly inferiore nello stack. Metodo B, che tenta di accedere alla risorsa, può arrestare immediatamente la procedura dello stack usando il Assert metodo . In questo caso, l'oggetto PermitOnly posizionato nello stack per metodo (il metodo A chiamante) non viene mai individuato.

PermitOnly è simile a Deny, in che entrambi causano l'esito negativo delle passeggiate dello stack quando potrebbero altrimenti avere esito positivo. La differenza è che Deny specifica le autorizzazioni che causeranno l'esito negativo della procedura dettagliata dello stack, ma PermitOnly specifica le uniche autorizzazioni che non causano l'esito negativo della procedura dettagliata dello stack.

Chiamare questo metodo per assicurarsi che il codice possa essere usato per accedere solo alle risorse specificate. La chiamata a PermitOnly è effettiva fino a quando il codice chiamante non restituisce al chiamante. PermitOnly Solo uno può essere attivo in un frame. Un tentativo di chiamare PermitOnly quando esiste un elemento attivo PermitOnly nel frame genera un SecurityExceptionoggetto . Chiamare RevertPermitOnly o RevertAll rimuovere un oggetto attivo PermitOnly.

PermitOnly viene ignorato per un'autorizzazione non concessa perché una richiesta per tale autorizzazione non avrà esito positivo. Tuttavia, se il codice è inferiore nello stack di chiamate in seguito chiama Demand tale autorizzazione, viene generato un SecurityException valore quando la procedura dello stack raggiunge il codice che ha tentato di chiamare PermitOnly. Questo è dovuto al fatto che il codice chiamato PermitOnly non è stato concesso all'autorizzazione, anche se ha chiamato PermitOnly per tale autorizzazione. Lo stack di chiamate è in genere rappresentato come in crescita, in modo che i metodi più elevati nei metodi di chiamata stack di chiamate siano inferiori nello stack di chiamate.

Note per gli eredi

Non è possibile eseguire l'override di questo metodo.

Si applica a