CodeAccessPermission.PermitOnly Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Impedisce ai chiamanti più in alto nello stack di chiamate di usare il codice che chiama questo metodo per accedere a tutte le risorse, ad eccezione della risorsa 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 elemento attivo PermitOnly() per il frame corrente.
Commenti
Importante
Il PermitOnly metodo deve essere usato solo per proteggere le risorse dall'accesso accidentale da codice completamente attendibile. Non deve essere usato per proteggere le risorse da uso improprio intenzionale da codice non attendibile. Ad esempio, se il metodo emette un PermitOnly oggetto per un'autorizzazione e quindi chiama il metodo B, il metodo B può eseguire eccessivamente l'override PermitOnly di eseguendo un oggetto Assert.A 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 verificare la presenza di autorizzazioni perché il metodo B è il chiamante immediato e quindi scorre lo stack per verificare che non vi sia o DenyPermitOnly meno nello stack. Il metodo B, che tenta di accedere alla risorsa, può arrestare immediatamente la procedura dello stack usando il Assert metodo . In tal caso, l'oggetto PermitOnly posizionato nello stack in base al metodo (il metodo A chiamante) non viene mai individuato.
PermitOnly è simile a Deny, in quanto entrambe causano l'esito negativo delle passeggiate dello stack quando altrimenti avranno esito positivo. La differenza è che Deny specifica le autorizzazioni che causeranno l'esito negativo della procedura dello stack, ma PermitOnly specifica le uniche autorizzazioni che non causano l'esito negativo della procedura 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 torna al chiamante. Solo uno PermitOnly può essere attivo su un frame. Un tentativo di chiamare PermitOnly quando esiste un elemento attivo PermitOnly nel frame restituisce un oggetto SecurityException. Chiamare RevertPermitOnly o RevertAll per rimuovere un oggetto attivo PermitOnly.
PermitOnly viene ignorato per un'autorizzazione non concessa perché una richiesta di tale autorizzazione non avrà esito positivo. Tuttavia, se il codice inferiore nello stack di chiamate chiama Demand successivamente tale autorizzazione, viene generata un'eccezione SecurityException quando lo stack walk raggiunge il codice che ha tentato di chiamare PermitOnly. Ciò è dovuto al fatto che al codice chiamato PermitOnly non è stata concessa l'autorizzazione, anche se ha chiamato PermitOnly per tale autorizzazione. Lo stack di chiamate viene in genere rappresentato come in continua crescita, in modo che i metodi più alti nei metodi di chiamata dello stack di chiamate siano inferiori nello stack di chiamate.
Note per gli eredi
Non è possibile eseguire l'override di questo metodo.