SYSLIB0002: PrincipalPermissionAttribute está obsoleto
El constructor PrincipalPermissionAttribute está obsoleto y genera un error en tiempo de compilaciónSYSLIB0002
a partir de .NET 5. No se puede crear una instancia de este atributo ni aplicarlo a un método.
A diferencia de otras advertencias de obsolescencia, el error no se puede suprimir.
Soluciones alternativas
Si va a aplicar el atributo a un método de acción de MVC de ASP.NET:
Considere la posibilidad de usar la infraestructura de autorización integrada de ASP.NET. En el código siguiente se muestra cómo anotar un controlador con un atributo AuthorizeAttribute. El entorno de ejecución de ASP.NET autoriza al usuario antes de realizar la acción.
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. } } }
Para obtener más información, vea Autorización basada en roles en ASP.NET Core e Introducción a la autorización en ASP.NET Core.
Si va a aplicar el atributo a código de biblioteca fuera del contexto de una aplicación web:
Realice las comprobaciones manualmente al principio del método mediante una llamada al método 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. }