CodeAccessPermission.PermitOnly CodeAccessPermission.PermitOnly CodeAccessPermission.PermitOnly CodeAccessPermission.PermitOnly Method

Definition

Verhindert, dass übergeordnete Aufrufer in der Aufrufliste auf alle außer der von der aktuellen Instanz angegebenen Ressource über den Code zugreifen, der diese Methode aufruft.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

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 A Methode z. b. PermitOnly ein-Element für eine Berechtigung ausgibt Bund dann B die-Methode aufruft, PermitOnly kann die- AssertMethode überschreiben, indem eine ausgegeben wird.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 die Methode B versucht, auf eine geschützte Ressource zuzugreifen, beginnt das Sicherheitssystem daher mit der Überprüfung auf Berechtigungen B , da die Methode der unmittelbare Aufrufer ist, und durchläuft dann den Stapel Deny nach unten, um zu bestätigen, dass kein oder PermitOnly unten 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 BMethode, 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 PermitOnly , die von der-Methode A auf dem Stapel platziert 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 Deny darin, dass die Berechtigungen angibt, die dazu führen, dass PermitOnly der Stapel Durchlauf fehlschlägt, aber 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 PermitOnly im Frame vorhanden ist, SecurityExceptionführt zu einer.An attempt to call PermitOnly when an active PermitOnly exists on the frame results in a SecurityException. Ruft RevertPermitOnly PermitOnlyoder RevertAll auf, um eine aktive zu entfernen.Call RevertPermitOnly or RevertAll to remove an active PermitOnly.

PermitOnlywird 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 Demand 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 PermitOnly , der aufrief, nicht die Berechtigung erteilt wurde, PermitOnly obwohl er 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: