CodeAccessPermission.PermitOnly Méthode

Définition

Empêche les appelants plus hauts dans la pile des appels d’utiliser le code qui appelle cette méthode pour accéder à toutes les ressources à l’exception de la ressource spécifiée par l’instance actuelle.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:
 void PermitOnly();
[System.Diagnostics.Conditional("FEATURE_MONO_CAS")]
public void PermitOnly ();
member this.PermitOnly : unit -> unit
Public Sub PermitOnly ()

Implémente

Attributs

Exceptions

Il existe déjà un PermitOnly() actif pour l’image actuelle.There is already an active PermitOnly() for the current frame.

Remarques

Important

La méthode PermitOnly doit être utilisée uniquement pour protéger les ressources contre l’accès accidentel par du code d’un niveau de confiance suffisant.The PermitOnly method should be used only to protect resources from accidental access by fully trusted code. Elle ne doit pas être utilisée pour protéger les ressources contre une mauvaise utilisation intentionnelle par du code non fiable.It should not be used to protect resources from intentional misuse by untrusted code. Par exemple, si la méthode A émet une PermitOnly pour une autorisation, puis appelle la méthode B, la méthode B peut substituer de façon manifeste le PermitOnly en émettant une 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. La méthode appelée est toujours plus élevée dans la pile.The called method is always higher in the stack. Par conséquent, si la méthode B tente d’accéder à une ressource protégée, le système de sécurité commence à vérifier les autorisations associées, car la méthode B est l’appelant immédiat, puis parcourt la pile pour confirmer qu’il n’y a pas d' Deny ou PermitOnly inférieur dans la pile.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. La méthode B, qui tente d’accéder à la ressource, peut arrêter immédiatement le parcours de la pile à l’aide de la méthode Assert.Method B, which is trying to access the resource, can stop the stack walk immediately by using the Assert method. Dans ce cas, le PermitOnly placé sur la pile par la méthode A (la méthode appelante) n’est jamais découvert.In that case, the PermitOnly placed on the stack by method A (the calling method) is never discovered.

PermitOnly est semblable à Deny, dans le sens où les deux provoquent l’échec des parcours de pile lorsqu’ils réussissent normalement.PermitOnly is similar to Deny, in that both cause stack walks to fail when they would otherwise succeed. La différence est que Deny spécifie des autorisations qui provoqueront l’échec du parcours de la pile, mais PermitOnly spécifie les seules autorisations qui n’entraînent pas l’échec du parcours de la pile.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.

Appelez cette méthode pour vous assurer que votre code peut être utilisé pour accéder uniquement aux ressources spécifiées.Call this method to ensure that your code can be used to access only the specified resources. L’appel à PermitOnly est effectif jusqu’à ce que le code appelant retourne à son appelant.The call to PermitOnly is effective until the calling code returns to its caller. Une seule PermitOnly peut être active sur un frame.Only one PermitOnly can be active on a frame. Une tentative d’appel d' PermitOnly lorsqu’un PermitOnly actif existe sur le frame génère une SecurityException.An attempt to call PermitOnly when an active PermitOnly exists on the frame results in a SecurityException. Appelez RevertPermitOnly ou RevertAll pour supprimer un PermitOnlyactif.Call RevertPermitOnly or RevertAll to remove an active PermitOnly.

PermitOnly est ignorée pour une autorisation non accordée, car une demande pour cette autorisation échoue.PermitOnly is ignored for a permission not granted because a demand for that permission will not succeed. Toutefois, si le code situé plus bas dans la pile des appels appelle ultérieurement Demand pour cette autorisation, une SecurityException est levée lorsque le parcours de la pile atteint le code qui a essayé d’appeler 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. Cela est dû au fait que le code qui a appelé PermitOnly n’a pas reçu l’autorisation, bien qu’il ait appelé PermitOnly pour cette autorisation.This is because the code that called PermitOnly has not been granted the permission, even though it called PermitOnly for that permission. La pile des appels est généralement représentée comme étant en baisse, de sorte que les méthodes plus élevées dans la pile des appels appellent les méthodes inférieures dans la pile des appels.The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack.

Notes pour les héritiers

Vous ne pouvez pas substituer cette méthode.You cannot override this method.

S’applique à