CodeAccessPermission.Deny 方法

定義

警告

此 API 現已淘汰。

警告

Deny is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.

防止呼叫堆疊中較高的呼叫者使用呼叫此方法的程式碼來存取目前實例指定的資源。

public:
 virtual void Deny();
[System.Obsolete]
public void Deny();
public void Deny();
[System.Obsolete("Deny is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public void Deny();
[<System.Obsolete>]
abstract member Deny : unit -> unit
override this.Deny : unit -> unit
abstract member Deny : unit -> unit
override this.Deny : unit -> unit
[<System.Obsolete("Deny is obsolete and will be removed in a future release of the .NET Framework. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")>]
abstract member Deny : unit -> unit
override this.Deny : unit -> unit
Public Sub Deny ()

實作

屬性

例外狀況

目前幀已經有一個活動狀態 Deny()

備註

Important

Deny 方法僅用於保護資源免於完全受信任程式碼的意外存取。 它不應用來保護資源免於被不受信任程式碼故意濫用。 例如,若方法 A 發出 a Deny 以取得權限,然後呼叫方法 B,方法 B 可透過 Deny 發出 Assert。 被呼叫的方法總是在堆疊中較高的位置。 因此,若方法 B 嘗試存取受保護資源,安全系統會開始檢查權限,因為方法 B 是直接呼叫者,接著沿堆疊向下行確認堆疊中沒有 DenyPermitOnly 更低。 B嘗試存取資源的方法 ,可以使用該Assert方法立即停止堆疊行走。 在這種情況下, Deny 放在堆疊中的 by 方法 A (呼叫方法)永遠不會被發現。

此方法防止呼叫堆疊中較高層的呼叫者透過呼叫此方法的程式碼存取受保護資源,即使這些呼叫者已被授權存取該資源。 呼叫堆疊通常以向下成長表示,因此呼叫堆疊中較高的方法也會在呼叫堆疊中較低的呼叫方法。

Deny 這能減少程式設計師的責任,或幫助防止意外的安全問題,因為這有助於防止 Deny 呼叫被拒絕權限所保護的資源被使用。 如果一個方法 Deny 呼叫某個權限,且呼叫堆疊下方的呼叫者呼叫該權限的 a Demand ,該安全檢查在達到 Deny時會失敗。

呼叫 的 Deny 有效性直到呼叫代碼返回給呼叫者為止。 幀上只能有一人 Deny 是活躍的。 當畫面上有活動Deny時嘗試呼叫Deny,結果為 SecurityException。 請致電 RevertDenyRevertAll 移除活躍 Deny的。 Deny 因為申請許可無法成功而被忽視。

給繼承者的注意事項

你無法覆蓋這個方法。

適用於