SYSLIB0002: PrincipalPermissionAttribute är föråldrad
Konstruktorn PrincipalPermissionAttribute är föråldrad och skapar kompileringsfel SYSLIB0002
med början i .NET 5. Du kan inte instansiera det här attributet eller tillämpa det på en metod.
Till skillnad från andra obsoletionsvarningar kan du inte ignorera felet.
Provisoriska lösningar
Om du tillämpar attributet på en ASP.NET MVC-åtgärdsmetod:
Överväg att använda ASP. NET:s inbyggda auktoriseringsinfrastruktur. Följande kod visar hur du kommenterar en kontrollant med ett AuthorizeAttribute attribut. Den ASP.NET körningen auktoriserar användaren innan åtgärden utförs.
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. } } }
Mer information finns i Rollbaserad auktorisering i ASP.NET Core och Introduktion till auktorisering i ASP.NET Core.
Om du tillämpar attributet på bibliotekskod utanför kontexten för en webbapp:
Utför kontrollerna manuellt i början av metoden genom att anropa IPrincipal.IsInRole(String) metoden.
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. }