PermissionSet.PermitOnly PermissionSet.PermitOnly PermissionSet.PermitOnly PermissionSet.PermitOnly Method


現在の PermissionSet のサブセットではない PermissionSet について、呼び出し側コードをパススルーする Demand() が失敗するようにします。Causes any Demand() that passes through the calling code for any PermissionSet that is not a subset of the current PermissionSet to fail.

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



PermitOnlyはと似Denyていますが、それ以外の場合は成功した場合にスタックウォークが失敗します。PermitOnly is similar to Deny, in that both cause stack walks to fail when they would otherwise succeed. 違いは、がDenyスタックウォークを失敗させるアクセス許可を指定することPermitOnlyですが、スタックウォークが失敗することのない唯一のアクセス許可を指定することです。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. コードを使用して、指定したリソースにのみアクセスできるようにするには、このメソッドを呼び出します。Call this method to ensure that your code can be used to access only the specified resources.

PermitOnlyは、許可されていないアクセス許可の要求を成功させることができないため、このアクセス許可は無視されます。PermitOnly is ignored for a permission not granted because a demand for that permission cannot succeed. ただし、後で呼び出し履歴のコードがそのアクセスDemand許可を呼び出すとSecurityException 、スタックウォークがを呼び出そう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. これは、呼び出さPermitOnlyれたコードに、そのアクセス許可に対してが呼び出さPermitOnlyれていてもアクセス許可が付与されていないためです。This is because the code that called PermitOnly has not been granted the permission, even though it called PermitOnly for that permission. 呼び出し履歴は、通常、コールスタックの上位にあるメソッドが呼び出し履歴の下位にあるメソッドを呼び出すように、拡張ダウンとして表されます。The call stack is typically represented as growing down, so that methods higher in the call stack call methods lower in the call stack.