CodeAccessPermission.Assert Metoda

Definicja

Deklaruje, że kod wywołujący może uzyskać dostęp do zasobu chronionego przez żądanie uprawnień za pośrednictwem kodu, który wywołuje tę metodę, nawet jeśli osoby wywołujące wyższe w stosie nie otrzymały uprawnień dostępu do zasobu. Korzystanie z programu Assert() może powodować problemy z zabezpieczeniami.

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

Implementuje

Wyjątki

Kod wywołujący nie ma Assertionelementu .

— lub —

Dla bieżącej ramki jest już aktywny Assert() .

Uwagi

Stos wywołań jest zwykle reprezentowany jako rosnący w dół, dzięki czemu metody wyższe w metodach wywołań stosu wywołań są niższe w stosie wywołań. Wywołanie Assert uniemożliwia przejście stosu pochodzącego z niższego poziomu w stosie wywołań przed przejściem do stosu wywołań poza kod, który wywołuje tę metodę. W związku z tym, nawet jeśli osoby wywołujące wyższe w stosie wywołań nie mają wymaganych uprawnień dostępu do zasobu, nadal mogą uzyskać do niego dostęp za pośrednictwem kodu, który wywołuje tę metodę przy użyciu niezbędnych uprawnień. Potwierdzenie jest skuteczne tylko wtedy, gdy kod, który wywołuje Assert sprawdzanie zabezpieczeń, pod kątem uprawnień, które jest potwierdzane.

Wywołanie metody jest Assert skuteczne, dopóki kod wywołujący nie powróci do obiektu wywołującego. Tylko jeden Assert może być aktywny na ramce. Próba wywołania Assert elementu , gdy aktywna Assert istnieje na ramce, powoduje wyświetlenie elementu SecurityException. Wywołaj RevertAssert lub RevertAll usuń aktywny Assertelement .

Assert Jest ignorowany dla uprawnienia, które nie udzielono, ponieważ żądanie dla tego uprawnienia nie powiedzie się. Jeśli jednak kod niższy w stosie wywołań wywołuje Demand to uprawnienie, element zostanie zgłoszony, SecurityException gdy przewodnik stosu osiągnie kod, który próbował wywołać metodę Assert. Dzieje się tak, ponieważ kod, którego wywołano Assert , nie otrzymał uprawnienia, mimo że próbował Assert .

Caution

Ponieważ wywołanie Assert usuwa wymaganie, że cały kod w łańcuchu wywołań musi mieć uprawnienie dostępu do określonego zasobu, może otwierać problemy z zabezpieczeniami, jeśli są używane niepoprawnie lub niewłaściwie. W związku z tym należy go używać z dużą ostrożnością.

Notatki dotyczące dziedziczenia

Nie można zastąpić tej metody.

Dotyczy

Zobacz też