SYSLIB0002: PrincipalPermissionAttribute è obsoleto
Il costruttore PrincipalPermissionAttribute è obsoleto e genera un errore SYSLIB0002
in fase di compilazione, a partire da .NET 5. Non è possibile creare un'istanza di questo attributo o applicarlo a un metodo.
A differenza di altri avvisi obsoleti, non è possibile eliminare l'errore.
Soluzioni alternative
Se si applica l'attributo a un metodo di azione MVC ASP.NET:
Prendere in considerazione l'uso dell'infrastruttura di autorizzazione predefinita di ASP.NET. Il codice seguente illustra come annotare un controller con un attributo AuthorizeAttribute. Il runtime ASP.NET autorizzerà l'utente prima di eseguire l'azione.
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. } } }
Per altre informazioni, vedere Autorizzazione basata sui ruoli in ASP.NET Core e Introduzione all'autorizzazione in ASP.NET Core.
Se si applica l'attributo al codice della libreria all'esterno del contesto di un'app Web:
Eseguire manualmente i controlli all'inizio del metodo chiamando il metodo IPrincipal.IsInRole(String).
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. }