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

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 die Methode z. b. A ein PermitOnly -Element für eine Berechtigung ausgibt und dann die-Methode aufruft B , B kann die-Methode überschreiben, PermitOnly indem eine ausgegeben wird 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. Die aufgerufene Methode ist im Stapel immer höher.The called method is always higher in the stack. Wenn B die Methode versucht, auf eine geschützte Ressource zuzugreifen, beginnt das Sicherheitssystem daher 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 Deny im Stapel keine oder niedriger vorhanden ist PermitOnly .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 unterbinden.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, die von der- PermitOnly Methode auf dem Stapel platziert A wird (die Aufruf Methode), 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 die Deny Berechtigungen angibt, die dazu führen, dass der Stapel Durchlauf fehlschlägt, aber PermitOnly nur die Berechtigungen angibt, die nicht bewirken, 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 ist 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 eine PermitOnly kann auf einem Frame aktiv sein.Only one PermitOnly can be active on a frame. Ein Versuch, aufzurufen, PermitOnly Wenn eine aktive im PermitOnly Frame vorhanden ist, führt zu einer 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 zu entfernen PermitOnly .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 in der Aufruf Stapel Zeit weiter unten aufruft Demand , wird eine ausgelöst, SecurityException Wenn der Stapel Durchlauf den Code erreicht, der versucht hat, aufzurufen 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. Dies liegt daran, dass dem Code, der aufrief PermitOnly , nicht die Berechtigung erteilt wurde, obwohl er PermitOnly für diese Berechtigung aufgerufen wurde.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: