CodeAccessPermission.Assert 方法

定義

宣告即使堆疊中較高層的呼叫端未獲得資源存取權限,呼叫程式碼仍可透過呼叫這個方法的程式碼要求權限,來存取受保護的資源。 使用 Assert() 會造成安全性問題。

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

實作

例外狀況

呼叫程式碼沒有 Assertion

-或-

目前的框架已有作用中的 Assert()

備註

呼叫堆疊通常表示為向下成長,因此呼叫堆棧呼叫方法中的方法會降低呼叫堆疊。 呼叫 Assert 可防止堆疊逐步解說在呼叫堆疊中較低,而無法繼續呼叫堆疊超出呼叫此方法的程序代碼。 因此,即使呼叫堆疊較高的呼叫端沒有存取資源的必要許可權,他們仍然可以透過在必要許可權上呼叫此方法的程式代碼來存取它。 只有在呼叫 Assert 的程式代碼通過其判斷提示許可權的安全性檢查時,判斷提示才有效。

呼叫 Assert 的有效,直到呼叫程式代碼返回其呼叫端為止。 框架上只能有一個 Assert 作用中。 試著在畫面上存在作用Assert中時呼叫 Assert ,會導致 SecurityException。 呼叫 RevertAssertRevertAll 以移除使用中的 Assert

Assert 會忽略未授與許可權的許可權,因為該許可權的需求將不會成功。 不過,如果呼叫堆疊Demand上的程式代碼較低呼叫該許可權,當堆疊逐步解說到達嘗試呼叫 Assert的程式代碼時,SecurityException會擲回 。 這是因為呼叫 Assert 的程式代碼尚未被授與許可權,即使它嘗試 Assert 它也一樣。

警告

由於呼叫 會移除呼叫 Assert 鏈結中所有程式代碼必須授與存取指定資源的許可權,因此如果不正確或不當使用,它可能會開啟安全性問題。 因此,應該謹慎使用。

給繼承者的注意事項

您無法覆寫這個方法。

適用於

另請參閱