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.

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

Implémente

Exceptions

Il existe déjà un PermitOnly() actif pour l’image actuelle.

Remarques

Important

La PermitOnly méthode doit être utilisée uniquement pour protéger les ressources contre tout accès accidentel par du code entièrement fiable. Il ne doit pas être utilisé pour protéger les ressources contre toute utilisation intentionnelle par du code non approuvé. Par exemple, si la méthode A émet un PermitOnly pour une autorisation, puis appelle la méthode B, la méthode B peut remplacer ouvertement le PermitOnly en émettant un Assert. La méthode appelée est toujours plus élevée dans la pile. Par conséquent, si la méthode B tente d’accéder à une ressource protégée, le système de sécurité commence à rechercher des autorisations avec elle, car la méthode B est l’appelant immédiat, puis descend dans la pile pour confirmer qu’il n’y a pas Deny ou PermitOnly moins d’autorisations dans la pile. La méthode B, qui tente d’accéder à la ressource, peut arrêter immédiatement la marche de la pile à l’aide de la Assert méthode . Dans ce cas, le PermitOnly placé sur la pile par la méthode A (méthode appelante) n’est jamais découvert.

PermitOnly est similaire à Deny, en ce sens que les deux entraînent l’échec des étapes de pile alors qu’elles réussiraient autrement. La différence est que Deny spécifie les autorisations qui entraînent l’échec de la marche de la pile, mais PermitOnly spécifie les seules autorisations qui ne provoquent pas l’échec de la procédure de la pile.

Appelez cette méthode pour vous assurer que votre code peut être utilisé pour accéder uniquement aux ressources spécifiées. L’appel à PermitOnly est effectif jusqu’à ce que le code appelant retourne à son appelant. PermitOnly Un seul peut être actif sur un frame. Une tentative d’appel PermitOnly lorsqu’un actif PermitOnly existe sur le frame entraîne un SecurityException. Appelez RevertPermitOnly ou RevertAll pour supprimer un actif PermitOnly.

PermitOnly est ignoré pour une autorisation non accordée, car une demande de cette autorisation échoue. Toutefois, si le code inférieur à la pile des appels appelle Demand ultérieurement pour cette autorisation, une SecurityException est levée lorsque la marche de la pile atteint le code qui a tenté d’appeler PermitOnly. Cela est dû au fait que le code qui a appelé PermitOnly n’a pas reçu l’autorisation, même s’il a demandé PermitOnly cette autorisation. La pile des appels est généralement représentée comme augmentant vers le bas, de sorte que les méthodes plus élevées dans la pile d’appels d’appels sont inférieures dans la pile des appels.

Notes pour les héritiers

Vous ne pouvez pas remplacer cette méthode.

S’applique à