Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Deklarative Sicherheit kann für Klassen, Member und geschachtelte Klassen ausgeführt werden. In diesem Abschnitt werden die Regeln zum Auswerten der deklarativen Sicherheit dargestellt, wenn diese auf mehrere Ebenen derselben Klasse angewendet wird.
Wichtig |
|---|
In .NET Framework, Version 4 wurde die Laufzeitunterstützung für die Erzwingung von Anforderungen für die Berechtigungen Deny, RequestMinimum, RequestOptional und RequestRefuse entfernt.Diese Anforderungen sollten nicht in Code verwendet werden, der auf .NET Framework 4 oder höher basiert.Weitere Informationen über diese und andere Änderungen finden Sie unter Änderungen der Sicherheit in .NET Framework 4. |
Klassen, Member und deklarative Sicherheit
Wenn deklarative Sicherheit für dieselbe Sicherheitsaktion sowohl auf Klassen- als auch auf Methodenebene besteht, wird die deklarative Sicherheit entsprechend der folgenden Tabelle angewendet.
Sicherheitsaktion |
Verhalten von .NET Framework, Version 2.0 |
.NET Framework, Version 4-Verhalten |
|---|---|---|
Forderung |
Attribute auf Methoden- und Klassenebene werden für beide Ebenen in einem Berechtigungssatz vereint. |
Keine Änderung im Verhalten. |
Verknüpfungsaufruf |
Attribute auf Methoden- und Klassenebene werden vereint. |
Keine Änderung im Verhalten. |
Vererbungsanforderung |
Attribute auf Klassenebene erfordern die angegebene Berechtigung, um von der Klasse ableiten zu können. Attribute auf Methodenebene erfordern die angegebene Berechtigung, um die Methode in einer abgeleiteten Klasse zu überschreiben. Weil Vererbungsanforderungen für Klassen und Methoden verschiedene Bedeutungen haben, können Deklarationen sowohl auf Klassen- als auch auf Methodenebene unabhängig angewendet werden. |
Keine Änderung im Verhalten. |
Assert |
Attribute auf Methoden- und Klassenebene werden für beide Ebenen in einem Berechtigungssatz vereint. |
Keine Änderung im Verhalten. |
Verweigern |
Attribute auf Methoden- und Klassenebene werden für beide Ebenen in einem Berechtigungssatz vereint. |
In .NET Framework 4 veraltet. |
Permit only |
Von Attributen auf Methoden- und Klassenebene wird die Schnittmenge gebildet und in einen Berechtigungssatz für beide Ebenen übernommen. |
Keine Änderung im Verhalten. |
Wenn die Sicherheitsaktionen verschieden sind (z. B. eine Forderung auf Klassenebene mit einer Assertion auf Methodenebene), findet keine Interaktion statt, und beide werden ausgewertet.
Geschachtelte Klassen und deklarative Sicherheit
Wenn Sie deklarative Sicherheit auf Klassen anwenden, wird diese nicht in geschachtelten Klassen oder Methoden von geschachtelten Klassen verbreitet. Umgekehrt wird deklarative Sicherheit ebenfalls nicht in den übergeordneten Klassen verbreitet, wenn sie auf geschachtelte Klassen oder Methoden einer geschachtelten Klasse angewendet wurde. Sie müssen deklarative Sicherheit auf geschachtelte Klassen genauso anwenden wie auf separate Klassen.
Im folgenden Beispiel wird eine hypothetische Berechtigung auf der Klassenebene der Klasse Main angefordert. Innerhalb dieser Klasse wird die geschachtelte Klasse Nested definiert. In diesem Beispiel wird die Forderung nicht auf die geschachtelte Klasse angewendet.
<SomePermissionAttribute(SecurityAction.Demand, Unrestricted:=True)> _
Public Class Main
' This nested class is not influenced by the demand.
Public Class Nested
' This method is not influenced by the demand.
Public Sub MyMethod()
End Sub
End Class
End Class
[SomePermissionAttribute(SecurityAction.Demand, Unrestricted = true)]
class Main
{
// This nested class is not influenced by the demand.
class Nested
{
// This method is not influenced by the demand.
public void MyMethod()
{
}
}
}
Wichtig