SYSLIB0002: PrincipalPermissionAttribute устарел

Начиная с версии .NET 5, конструктор PrincipalPermissionAttribute является устаревшим и вызывает ошибку времени компиляции SYSLIB0002. Нельзя создать экземпляр этого атрибута или применить его к методу.

В отличие от других устаревших предупреждений, эту ошибку нельзя обойти.

Методы обхода проблемы

  • При применении атрибута к методу действия MVC ASP.NET:

    Рассмотрите возможность использования встроенной инфраструктуры авторизации ASP.NET. В следующем примере кода показано, как добавить к контроллеру атрибут AuthorizeAttribute. Среда выполнения ASP.NET выполнит авторизацию пользователя перед выполнением действия.

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

    Дополнительные сведения см. в статьях Авторизация на основе ролей в ASP.NET Core и Общие сведения об авторизации в ASP.NET Core.

  • При применении атрибута к коду библиотеки вне контекста веб-приложения:

    Выполните проверки вручную в начале метода, вызвав метод 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.
    }
    

См. также

PrincipalPermissionAttribute устарел и является ошибочным