Udostępnij za pośrednictwem


CodeAccessPermission.Assert Metoda

Definicja

Deklaruje, że kod wywołujący może uzyskać dostęp do zasobu chronionego przez żądanie uprawnień za pomocą kodu wywołującego tę metodę, nawet jeśli osoby wywołujące wyższe w stosie nie otrzymały uprawnień dostępu do zasobu. Używanie Assert() polecenia 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, dzięki czemu metody wyższe w metodach wywołań stosu wywołań niższe w stosie wywołań. Wywołanie Assert uniemożliwia przejście stosu pochodzącemu z niższego poziomu w stosie wywołań przed stosem wywołań poza kodem, 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ą uzyskiwać do niego dostęp za pośrednictwem kodu, który wywołuje tę metodę na niezbędnych uprawnieniach. 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 , gdy aktywna Assert istnieje na ramce, powoduje wyświetlenie elementu SecurityException. Wywołaj lub RevertAssertRevertAll usuń aktywny Assertelement .

Assert jest ignorowana dla nieudzielonego uprawnienia, ponieważ żądanie dla tego uprawnienia nie powiedzie się. Jeśli jednak kod niższy w stosie wywołań wywołuje Demand to uprawnienie, SecurityException element jest zgłaszany, gdy stos dociera do kodu, który próbował wywołać Assertmetodę . Dzieje się tak, ponieważ kod, którego wywołano Assert , nie otrzymał uprawnień, mimo że próbował Assert .

Przestroga

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ą.

Uwagi dotyczące dziedziczenia

Nie można zastąpić tej metody.

Dotyczy

Zobacz też