Condividi tramite


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

Vedi anche

PrincipalPermissionAttribute è obsoleto come errore