SYSLIB0002: PrincipalPermissionAttribute ist veraltet
Der Konstruktor PrincipalPermissionAttribute ist veraltet und generiert ab .NET 5 den Kompilierzeitfehler SYSLIB0002
. Sie können dieses Attribut nicht instanziieren oder auf eine Methode anwenden.
Anders als bei anderen veralteten Warnungen können Sie den Fehler nicht unterdrücken.
Problemumgehung
Wenn Sie das Attribut auf eine ASP.NET MVC-Aktionsmethode anwenden:
Verwenden Sie ggf. die integrierte Autorisierungsinfrastruktur von ASP.NET. Der folgende Code veranschaulicht, wie ein Controller mit einem AuthorizeAttribute-Attribut versehen wird. Die ASP.NET-Laufzeit autorisiert den Benutzer, bevor die Aktion ausgeführt wird.
using Microsoft.AspNetCore.Authorization; namespace MySampleApp { [Authorize(Roles = "Administrator")] public class AdministrationController : Controller { public ActionResult MyAction() { // This code won't run unless the current user // is in the 'Administrator' role. } } }
Weitere Informationen finden Sie unter Rollenbasierte Autorisierung in ASP.NET Core und Einführung in die Autorisierung in ASP.NET Core.
Wenn Sie das Attribut auf Bibliothekscode außerhalb des Kontexts einer Web-App anwenden:
Führen Sie die Überprüfungen am Anfang der Methode manuell aus, indem Sie die Methode IPrincipal.IsInRole(String) aufrufen.
using System.Threading; void DoSomething() { if (Thread.CurrentPrincipal == null || !Thread.CurrentPrincipal.IsInRole("Administrators")) { throw new Exception("User is anonymous or isn't an admin."); } // Code that should run only when user is an administrator. }