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的程式碼時,會拋出 a SecurityException 。 這是因為呼叫Assert的程式碼沒有被授權,儘管它嘗試過。Assert

注意事項

因為呼叫 Assert 移除了必須授權所有呼叫鏈中程式碼才能存取指定資源的要求,若使用不當或不當,可能會引發安全問題。 因此,使用時應格外謹慎。

給繼承者的注意事項

你無法覆蓋這個方法。

適用於

另請參閱