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

Siehe auch

PrincipalPermissionAttribute ist als Fehler veraltet