CodeAccessPermission.PermitOnly メソッド

定義

呼び出し履歴内の上位の呼び出し元が、このメソッドを呼び出すコードでは一切リソースにアクセスできないようにします。ただし、現在のインスタンスで指定されているリソースは例外です。

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

実装

属性

例外

現在のフレームにはアクティブな PermitOnly() が既に存在しています。

注釈

重要

このメソッドは PermitOnly 、完全に信頼されたコードによる偶発的なアクセスからリソースを保護するためにのみ使用する必要があります。 信頼されていないコードによる意図的な誤用からリソースを保護するために使用しないでください。 たとえば、メソッドAがアクセス許可をPermitOnly発行してからメソッドBを呼び出した場合、メソッドBPermitOnlyAssert. 呼び出されたメソッドは常にスタックの上位にあります。 そのため、メソッド B が保護されたリソースへのアクセスを試みると、メソッド B が直接呼び出し元であるため、セキュリティ システムはアクセス許可のチェックを開始し、スタック内に存在しない DenyPermitOnly 低いかを確認するためにスタックを下に移動します。 リソースにアクセスしようとしているメソッド Bは、メソッドを使用してスタック ウォークを Assert 直ちに停止できます。 その場合、 PermitOnly メソッド別にスタックに配置されたメソッド A (呼び出し元のメソッド) は検出されません。

PermitOnly は、両方とも成功した場合にスタック ウォークが失敗するという点で似ています Deny。 違いは、 Deny スタック ウォークが失敗する原因となるアクセス許可を指定しますが PermitOnly 、スタック ウォークの失敗を引き起こさない唯一のアクセス許可を指定することです。

このメソッドを呼び出して、コードを使用して指定されたリソースにのみアクセスできることを確認します。 呼び出し PermitOnly 元は、呼び出し元のコードが呼び出し元に戻るまで有効です。 1 つのフレームでアクティブにできるのは 1 つだけ PermitOnly です。 アクティブなフレームが存在する場合PermitOnlyに呼び出PermitOnlyそうとすると、SecurityException. アクティブな呼び出しを呼び出 RevertPermitOnly すか RevertAll 、または PermitOnly削除します。

PermitOnly は、権限の要求が成功しないため、権限が付与されていない場合は無視されます。 ただし、呼び出し履歴の下位のコードがそのアクセス許可を後で呼び出Demandすと、スタック ウォークが呼び出PermitOnlyそうとしたコードに到達すると a SecurityException がスローされます。 これは、呼び出されたコードには、そのアクセス許可を呼び出PermitOnlyPermitOnlyした場合でも、アクセス許可が付与されていないためです。 通常、呼び出し履歴は、呼び出し履歴の呼び出しメソッドの上位のメソッドが呼び出し履歴内で低くなるように、縮小として表されます。

注意 (継承者)

このメソッドをオーバーライドすることはできません。

適用対象