CodeAccessPermission.PermitOnly Methode

Definition

Verhindert, dass in der Aufrufliste höher eingestufte Aufrufer den Code, der diese Methode aufruft, verwenden, um auf alle Ressourcen außer die Ressource zuzugreifen, die von der aktuellen Instanz angegeben wird.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 ()

Implementiert

Attribute

Ausnahmen

Es ist bereits eine aktive PermitOnly() für den aktuellen Frame vorhanden.There is already an active PermitOnly() for the current frame.

Hinweise

Wichtig

Die PermitOnly-Methode sollte nur verwendet werden, um Ressourcen vor versehentlichem Zugriff durch voll vertrauenswürdigen Code zu schützen.The PermitOnly method should be used only to protect resources from accidental access by fully trusted code. Sie sollte nicht verwendet werden, um Ressourcen vor absichtlichen Missbrauch durch nicht vertrauenswürdigen Code zu schützen.It should not be used to protect resources from intentional misuse by untrusted code. Wenn z. b. die Methode A eine PermitOnly für eine Berechtigung ausgibt und dann Method Baufruft, kann die Methode B den PermitOnly überschreiben, indem Sie eine Assertausgibt.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. Die aufgerufene Methode ist im Stapel immer höher.The called method is always higher in the stack. Wenn also die Methode B versucht, auf eine geschützte Ressource zuzugreifen, beginnt das Sicherheitssystem mit der Überprüfung auf Berechtigungen, da die Methode B der unmittelbare Aufrufer ist, und durchläuft dann den Stapel nach unten, um zu bestätigen, dass keine Deny oder PermitOnly niedriger vorhanden ist. im Stapel.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. Die Methode B, die versucht, auf die Ressource zuzugreifen, kann den Stapel Durchlauf sofort mithilfe der Assert-Methode abbrechen.Method B, which is trying to access the resource, can stop the stack walk immediately by using the Assert method. In diesem Fall wird die PermitOnly, die auf dem Stapel durch die Methode A (die Aufruf Methode) platziert wird, niemals erkannt.In that case, the PermitOnly placed on the stack by method A (the calling method) is never discovered.

PermitOnly ähnelt Deny, da beide dazu führen, dass Stapel Spaziergänge fehlschlagen, wenn Sie andernfalls erfolgreich verlaufen.PermitOnly is similar to Deny, in that both cause stack walks to fail when they would otherwise succeed. Der Unterschied besteht darin, dass Deny Berechtigungen angibt, die dazu führen, dass der Stapel Durchlauf fehlschlägt, PermitOnly jedoch die einzigen Berechtigungen angibt, die nicht dazu führen, dass der Stapel Durchlauf fehlschlägt.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.

Aufrufen Sie diese Methode, um sicherzustellen, dass der Code nur für den Zugriff auf die angegebenen Ressourcen verwendet werden kann.Call this method to ensure that your code can be used to access only the specified resources. Der Aufruf von PermitOnly wird wirksam, bis der aufrufende Code an seinen Aufrufer zurückgegeben wird.The call to PermitOnly is effective until the calling code returns to its caller. Nur ein PermitOnly kann auf einem Frame aktiv sein.Only one PermitOnly can be active on a frame. Der Versuch, PermitOnly aufzurufen, wenn eine aktive PermitOnly im Frame vorhanden ist, führt zu einem SecurityException.An attempt to call PermitOnly when an active PermitOnly exists on the frame results in a SecurityException. Ruft RevertPermitOnly oder RevertAll auf, um eine aktive PermitOnlyzu entfernen.Call RevertPermitOnly or RevertAll to remove an active PermitOnly.

PermitOnly wird für eine nicht erteilte Berechtigung ignoriert, da eine Anforderung für diese Berechtigung nicht erfolgreich ist.PermitOnly is ignored for a permission not granted because a demand for that permission will not succeed. Wenn der Code jedoch später in der Aufruf Stapel Demand für diese Berechtigung aufruft, wird eine SecurityException ausgelöst, wenn der Stapel Durchlauf den Code erreicht, der versucht hat, PermitOnlyaufzurufen.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. Dies liegt daran, dass dem Code, der PermitOnly aufgerufen hat, nicht die Berechtigung erteilt wurde, auch wenn er PermitOnly für diese Berechtigung aufgerufen hat.This is because the code that called PermitOnly has not been granted the permission, even though it called PermitOnly for that permission. Die-aufrufsstapel wird in der Regel so dargestellt, dass Sie in der aufrufsstapel-Methode weiter unten aufgerufen werden.The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack.

Hinweise für Vererber

Diese Methode kann nicht überschrieben werden.You cannot override this method.

Gilt für: