CodeAccessPermission.PermitOnly Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hindrar anropare högre i anropsstacken från att använda koden som anropar den här metoden för att komma åt alla resurser förutom den resurs som anges av den aktuella instansen.
public:
virtual void PermitOnly();
public void PermitOnly();
abstract member PermitOnly : unit -> unit
override this.PermitOnly : unit -> unit
Public Sub PermitOnly ()
Implementeringar
Undantag
Det finns redan en aktiv PermitOnly() för den aktuella ramen.
Kommentarer
Important
Metoden PermitOnly bör endast användas för att skydda resurser från oavsiktlig åtkomst med fullständigt betrodd kod. Den bör inte användas för att skydda resurser från avsiktligt missbruk av obetrodd kod. Om metoden A till exempel utfärdar en PermitOnly för en behörighet och sedan anropar metoden Bkan metoden B öppet åsidosätta PermitOnly genom att utfärda en Assert. Den anropade metoden är alltid högre i stacken. Om metoden B försöker komma åt en skyddad resurs börjar därför säkerhetssystemet söka efter behörigheter med den eftersom metoden B är den omedelbara anroparen och går sedan ned i stacken för att bekräfta att det inte finns någon Deny eller PermitOnly lägre i stacken. Metoden B, som försöker komma åt resursen, kan stoppa stackvandringen omedelbart med hjälp Assert av metoden . I så fall identifieras aldrig den PermitOnly placerade stacken efter metod A (anropande metod).
PermitOnly liknar Deny, eftersom båda orsakar att stacken går att misslyckas när de annars skulle lyckas. Skillnaden är att Deny anger behörigheter som gör att stacken misslyckas, men PermitOnly anger de enda behörigheter som inte leder till att stackvandringen misslyckas.
Anropa den här metoden för att se till att koden endast kan användas för att komma åt de angivna resurserna. Anropet till PermitOnly gäller tills den anropande koden återgår till anroparen. Endast en PermitOnly kan vara aktiv på en ram. Ett försök att anropa PermitOnly när en aktiv PermitOnly finns i ramen resulterar i en SecurityException. Anropa RevertPermitOnly eller RevertAll ta bort en aktiv PermitOnly.
PermitOnly ignoreras för en behörighet som inte har beviljats eftersom ett krav för den behörigheten inte lyckas. Men om koden lägre på anropsstacken senare anropar Demand för den behörigheten utlöses en SecurityException när stackvandringen når koden som försökte anropa PermitOnly. Det beror på att koden som anropade PermitOnly inte har beviljats behörigheten, även om den krävde PermitOnly den behörigheten. Anropsstacken representeras vanligtvis som växande nedåt, så att metoderna högre i anropsstackens anropsmetoder är lägre i anropsstacken.
Anteckningar till arvingar
Du kan inte åsidosätta den här metoden.