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.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 ()

Implementazioni

Attributi

Eccezioni

Esiste già un oggetto PermitOnly() attivo per il fotogramma corrente.There is already an active PermitOnly() for the current frame.

Commenti

Importante

Il PermitOnly metodo deve essere usato solo per proteggere le risorse dall'accesso accidentale da parte del codice completamente attendibile.The PermitOnly method should be used only to protect resources from accidental access by fully trusted code. Non deve essere usato per proteggere le risorse da un utilizzo improprio intenzionale da codice non attendibile.It should not be used to protect resources from intentional misuse by untrusted code. Se, ad esempio, A il metodo emette un oggetto PermitOnly per un'autorizzazione e quindi chiama B il metodo, B il metodo può eseguire in modo esplicito l'override PermitOnly di mediante l'emissione di un oggetto 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. Il metodo chiamato è sempre maggiore nello stack.The called method is always higher in the stack. Se pertanto il metodo B tenta di accedere a una risorsa protetta, il sistema di sicurezza inizia a verificare le autorizzazioni con esso, perché il metodo B è il chiamante immediato, quindi scorre lo stack per verificare che non sia presente Deny o PermitOnly inferiore nello stack.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. Il metodo B , che sta provando ad accedere alla risorsa, può arrestare immediatamente il percorso dello stack usando il Assert metodo.Method B, which is trying to access the resource, can stop the stack walk immediately by using the Assert method. In tal caso, l'oggetto PermitOnly inserito nello stack per metodo A (metodo chiamante) non viene mai individuato.In that case, the PermitOnly placed on the stack by method A (the calling method) is never discovered.

PermitOnly è simile a Deny , in quanto entrambi i percorsi dello stack potrebbero avere esito negativo in caso contrario.PermitOnly is similar to Deny, in that both cause stack walks to fail when they would otherwise succeed. La differenza è che Deny specifica le autorizzazioni che determineranno l'esito negativo del percorso dello stack, ma PermitOnly specifica le uniche autorizzazioni che non provocano l'errore del percorso dello stack.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.

Chiamare questo metodo per assicurarsi che il codice possa essere usato per accedere solo alle risorse specificate.Call this method to ensure that your code can be used to access only the specified resources. La chiamata a PermitOnly è valida fino a quando il codice chiamante non torna al chiamante.The call to PermitOnly is effective until the calling code returns to its caller. Solo uno PermitOnly può essere attivo in un frame.Only one PermitOnly can be active on a frame. Un tentativo di chiamare PermitOnly quando esiste un oggetto attivo nel PermitOnly frame restituisce un oggetto SecurityException .An attempt to call PermitOnly when an active PermitOnly exists on the frame results in a SecurityException. Chiamare RevertPermitOnly o RevertAll per rimuovere un oggetto attivo PermitOnly .Call RevertPermitOnly or RevertAll to remove an active PermitOnly.

PermitOnly viene ignorato per un'autorizzazione non concessa perché una richiesta di tale autorizzazione avrà esito negativo.PermitOnly is ignored for a permission not granted because a demand for that permission will not succeed. Tuttavia, se il codice inferiore nello stack di chiamate in un secondo momento chiama Demand tale autorizzazione, SecurityException viene generata un'eccezione quando il percorso stack raggiunge il codice che ha tentato di chiamare 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. Ciò è dovuto al fatto che al codice che PermitOnly ha chiamato non è stata concessa l'autorizzazione, anche se è stata chiamata PermitOnly per tale autorizzazione.This is because the code that called PermitOnly has not been granted the permission, even though it called PermitOnly for that permission. Lo stack di chiamate viene in genere rappresentato come crescente, in modo che i metodi più elevati nei metodi di chiamata dello stack di chiamate siano inferiori nello stack di chiamate.The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack.

Note per gli eredi

Non è possibile eseguire l'override di questo metodo.You cannot override this method.

Si applica a